Files
kotlin-fork/compiler/testData/codegen/box/diagnostics/functions/tailRecursion/defaultArgsWithSideEffects.kt
T
2020-03-11 22:08:59 +03:00

34 lines
566 B
Kotlin
Vendored

// !LANGUAGE: +ProperComputationOrderOfTailrecDefaultParameters
// DONT_RUN_GENERATED_CODE: JS
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"
}