aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/neg/power.scala15
-rw-r--r--tests/run/power.scala17
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))
+ }
+}