45 lines
848 B
Kotlin
Vendored
45 lines
848 B
Kotlin
Vendored
// KJS_WITH_FULL_RUNTIME
|
|
// EXPECTED_REACHABLE_NODES: 1288
|
|
var log = ""
|
|
|
|
fun foo() {
|
|
fun local(x: String) {
|
|
if (x.isEmpty()) return
|
|
log += "foo(${x[0]});"
|
|
local(x.substring(1))
|
|
}
|
|
local("OK")
|
|
}
|
|
|
|
fun bar() {
|
|
fun local(x: String) {
|
|
if (x.isEmpty()) return
|
|
log += "bar(${x[0]});"
|
|
local(x.substring(1))
|
|
}
|
|
local("OK")
|
|
}
|
|
|
|
fun baz(): Int {
|
|
fun local(x: String) {
|
|
if (x.isEmpty()) return
|
|
log += "baz(${x[0]});"
|
|
local(x.substring(1))
|
|
}
|
|
fun local(x: Int): Int = if (x == 0) 1 else x * local(x - 1)
|
|
local("OK")
|
|
return local(3)
|
|
}
|
|
|
|
|
|
fun box(): String {
|
|
foo()
|
|
bar()
|
|
val result = baz()
|
|
|
|
if (result != 6) return "fail1: $result"
|
|
|
|
if (log != "foo(O);foo(K);bar(O);bar(K);baz(O);baz(K);") return "fail2: $result"
|
|
|
|
return "OK"
|
|
} |