summaryrefslogtreecommitdiff
path: root/test/files/run/tailcalls.scala
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2007-03-28 12:49:27 +0000
committerIulian Dragos <jaguarul@gmail.com>2007-03-28 12:49:27 +0000
commitbccb84e1e45009b8e38dc3d1d8ec87ef030a907d (patch)
tree98ef5b6a8114c6b9d430335845b941e1eb5deb71 /test/files/run/tailcalls.scala
parent43185f20f4c71d9dce678f5d2c8253884fd61727 (diff)
downloadscala-bccb84e1e45009b8e38dc3d1d8ec87ef030a907d.tar.gz
scala-bccb84e1e45009b8e38dc3d1d8ec87ef030a907d.tar.bz2
scala-bccb84e1e45009b8e38dc3d1d8ec87ef030a907d.zip
Fixed tail call elimination for calls in the rh...
Fixed tail call elimination for calls in the rhs of boolean &&.
Diffstat (limited to 'test/files/run/tailcalls.scala')
-rw-r--r--test/files/run/tailcalls.scala3
1 files changed, 3 insertions, 0 deletions
diff --git a/test/files/run/tailcalls.scala b/test/files/run/tailcalls.scala
index 87a14b3f53..8b198b53a0 100644
--- a/test/files/run/tailcalls.scala
+++ b/test/files/run/tailcalls.scala
@@ -182,6 +182,8 @@ class TailCall[S](s: S) {
final def b1(x: Int): Boolean =
(x == 1) || b1(x - 1)
+ final def b2(x: Int): Boolean =
+ (x > 0) && ((x == 1) || b1(x - 1))
def h1(n: Int, v: Int): Int = hP(n, v);
private def hP(n: Int, v: Int): Int = if (n == 0) v else hP(n - 1, v - 1);
@@ -345,6 +347,7 @@ object Test {
check_overflow("NonTailCall.f2", NonTailCall.f2(max))
check_success_b("TailCall.b1", TailCall.b1(max), true);
+ check_success_b("TailCall.b2", TailCall.b2(max), true);
}
}