IR: make calls with explicit singleton receiver tailrec [KT-48602]
This commit is contained in:
committed by
TeamCityServer
parent
8525b4932b
commit
3c84fbcab1
+25
@@ -0,0 +1,25 @@
|
||||
// DONT_TARGET_EXACT_BACKEND: WASM
|
||||
// WASM_MUTE_REASON: IGNORED_IN_JS
|
||||
// IGNORE_BACKEND: JS_IR
|
||||
// IGNORE_BACKEND: JS_IR_ES6
|
||||
// DONT_RUN_GENERATED_CODE: JS
|
||||
// IGNORE_BACKEND: JS
|
||||
// IGNORE_BACKEND: JVM
|
||||
// IGNORE_FIR_DIAGNOSTICS_DIFF
|
||||
|
||||
// Light analysis thinks this test passes but it doesn't because JVM backend does not compile this into a tailrec function.
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
|
||||
class C {
|
||||
companion object {
|
||||
<!NO_TAIL_CALLS_FOUND!>tailrec fun rec(i: Int)<!> {
|
||||
if (i <= 0) return
|
||||
C.<!NON_TAIL_RECURSIVE_CALL!>rec<!>(i - 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
C.rec(100000)
|
||||
return "OK"
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// DONT_TARGET_EXACT_BACKEND: WASM
|
||||
// WASM_MUTE_REASON: IGNORED_IN_JS
|
||||
// IGNORE_BACKEND: JS_IR_ES6
|
||||
// DONT_RUN_GENERATED_CODE: JS
|
||||
|
||||
object O {
|
||||
tailrec fun rec(i: Int) {
|
||||
if (i <= 0) return
|
||||
O.rec(i - 1)
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
O.rec(100000)
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user