Indirect tests for tail call diagnostics removed

This commit is contained in:
Andrey Breslav
2013-11-26 21:21:36 +04:00
parent 94500bd968
commit 0316e6cb8d
20 changed files with 80 additions and 451 deletions
@@ -1,25 +1,23 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class A {
tailRecursive fun f1(c : Int, x : Any) {
tailRecursive fun f1(c : Int) {
if (c > 0) {
this.f1(c - 1, "tail")
this.f1(c - 1)
}
}
tailRecursive fun f2(c : Int, x : Any) {
tailRecursive fun f2(c : Int) {
if (c > 0) {
f2(c - 1, "tail 108")
f2(c - 1)
}
}
<!NO_TAIL_CALLS_FOUND!>tailRecursive fun f3(a : A, x : Any)<!> {
a.<!NON_TAIL_RECURSIVE_CALL!>f3<!>(a, "no tail") // non-tail recursion, could be potentially resolved by condition if (a == this) f3() else a.f3()
<!NO_TAIL_CALLS_FOUND!>tailRecursive fun f3(a : A)<!> {
a.<!NON_TAIL_RECURSIVE_CALL!>f3<!>(a) // non-tail recursion, could be potentially resolved by condition if (a == this) f3() else a.f3()
}
}
fun box() : String {
A().f1(1000000, "test")
A().f2(1000000, "test")
A().f1(1000000)
A().f2(1000000)
return "OK"
}