diff options
Diffstat (limited to 'test/files/neg/t6526.scala')
-rw-r--r-- | test/files/neg/t6526.scala | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/files/neg/t6526.scala b/test/files/neg/t6526.scala new file mode 100644 index 0000000000..0bc249aa98 --- /dev/null +++ b/test/files/neg/t6526.scala @@ -0,0 +1,41 @@ +import scala.annotation.tailrec + +class TailRec { + def bar(f: => Any) = "" + + // transform the qualifier of a Select + bar { + @tailrec def inner(i: Int): Int = 1 + inner(i) + inner(0) + }.length + + // transform the body of a function + () => { + @tailrec def inner(i: Int): Int = 1 + inner(i) + inner(0) + } + + // transform the qualifier of a Select + { + @tailrec def inner(i: Int): Int = 1 + inner(i) + inner(0) + "" + }.length + + // The receiver of a tail recursive call must itself be transformed + object X { + @tailrec // okay, all other annotated methods should fail. + def foo: Any = { + { + @tailrec def inner(i: Int): Int = 1 + inner(i) + inner(0) + this + }.foo + } + } + + Some(new AnyRef) map { phooie => + @tailrec + def inner(i: Int): Int = 1 + inner(i) + } getOrElse 42 +} |