Files
kotlin-fork/js/js.translator/testData/box/nameClashes/localFunctions.kt
T

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"
}