Files
kotlin-fork/compiler/testData/codegen/box/diagnostics/functions/tailRecursion/loops.kt
T
Tianyu Geng 8525b4932b FIR Checker: check tailrec
Difference from FE1.0
* KT-4285: calls to virtual method with default argument should be
  reported as not tailrec. FE1.0 is missing such cases.
* KT-48600: calls inside lambda should be reported as not tailrec. FE1.0
  also misses such cases.
2021-09-14 23:48:50 +03:00

23 lines
548 B
Kotlin
Vendored

// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: IGNORED_IN_JS
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
// TODO: muted automatically, investigate should it be ran for JS or not
// DONT_RUN_GENERATED_CODE: JS
// IGNORE_BACKEND: JS
tailrec fun test(x : Int) : Int {
var z = if (x > 3) 3 else x
while (z > 0) {
if (z > 10) {
return test(x - 1)
}
<!NON_TAIL_RECURSIVE_CALL!>test<!>(0)
z = z - 1
}
return 1
}
fun box() : String = if (test(100000) == 1) "OK" else "FAIL"