aboutsummaryrefslogtreecommitdiff
path: root/tests/run/t8893.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run/t8893.scala')
-rw-r--r--tests/run/t8893.scala40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/run/t8893.scala b/tests/run/t8893.scala
new file mode 100644
index 000000000..5178226de
--- /dev/null
+++ b/tests/run/t8893.scala
@@ -0,0 +1,40 @@
+import annotation.tailrec
+
+object Test {
+ def a(): Option[String] = Some("a")
+
+ def test1: Any = {
+ a() match {
+ case Some(b1) =>
+ a() match {
+ case Some(b2) =>
+ @tailrec
+ def tick(i: Int): Unit = if (i < 0) () else tick(i - 1)
+ tick(10000000) // testing that this doesn't SOE
+ case None => None
+ }
+ case None => None
+ }
+ }
+
+ def test2: Any = {
+ a() match {
+ case Some(b1) =>
+ a() match {
+ case Some(b2) =>
+ @tailrec
+ def tick(i: Int): Unit = if (i < 0) () else tick(i - 1)
+ tick(10000000) // testing that this doesn't SOE
+ case None => test1
+ }
+ case None =>
+ test1 // not a tail call
+ test1
+ }
+ }
+
+ def main(args: Array[String]): Unit = {
+ test1
+ test2
+ }
+}