Files
kotlin-fork/compiler/testData/codegen/box/diagnostics/functions/tailRecursion/defaultArgsWithSideEffects.kt
T
Ting-Yuan Huang bdcd6f73b1 Move tailrecPhase before defaultArgumentStubPhase
So that default values can be copied to the recursive call sites.
2019-05-24 09:51:07 +02:00

34 lines
525 B
Kotlin
Vendored

// DONT_RUN_GENERATED_CODE: JS
// IGNORE_BACKEND: JVM
var counter = 0
fun inc() = counter++
tailrec fun test(x: Int = 0, y: Int = inc(), z: Int = inc()) {
if (x * 2 != y || z - y != 1)
throw IllegalArgumentException("x=$x y=$y z=$z")
if (x < 100000)
test(x + 1)
}
fun box() : String {
test()
counter = 4
test(x = 1, y = 2, z = 3)
counter = 0
test(-1, -2, -1)
counter = 3
test(1, 2)
counter = 1
test(y = 0)
counter = 2
test(x = 1)
return "OK"
}