diff options
-rw-r--r-- | tests/neg/power.scala | 15 | ||||
-rw-r--r-- | tests/run/power.scala | 17 |
2 files changed, 32 insertions, 0 deletions
diff --git a/tests/neg/power.scala b/tests/neg/power.scala new file mode 100644 index 000000000..7439d8699 --- /dev/null +++ b/tests/neg/power.scala @@ -0,0 +1,15 @@ +object Test { + + @dotty.annotation.inline + def power(x: Double, n: Int): Double = + if (n == 0) 1.0 + else if (n == 1) x + else { + val y = power(x, n / 2) // error: maximal number of inlines exceeded + if (n % 2 == 0) y * y else y * y * x + } + + def main(args: Array[String]): Unit = { + println(power(2.0, args.length)) + } +} diff --git a/tests/run/power.scala b/tests/run/power.scala new file mode 100644 index 000000000..2bb66fa8d --- /dev/null +++ b/tests/run/power.scala @@ -0,0 +1,17 @@ +object Test { + + @dotty.annotation.inline + def power(x: Double, n: Int): Double = + if (n == 0) 1.0 + else if (n == 1) x + else { + val y = power(x, n / 2) + if (n % 2 == 0) y * y else y * y * x + } + + def main(args: Array[String]): Unit = { + println(power(2.0, 10)) + def x = 2.0 + println(power(x, 11)) + } +} |