Files
kotlin-fork/js/js.translator/testData/box/inline/lambdaReassignmentWithCapture.kt
2022-04-11 10:37:21 +00:00

32 lines
660 B
Kotlin
Vendored

// EXPECTED_REACHABLE_NODES: 1295
package foo
data class IntPair(public var fst: Int, public var snd: Int)
inline fun run(func: () -> Int): Int {
return func()
}
// CHECK_BREAKS_COUNT: function=bar count=0 TARGET_BACKENDS=JS_IR
// CHECK_LABELS_COUNT: function=bar name=$l$block count=0 TARGET_BACKENDS=JS_IR
fun bar(p: IntPair): Int {
var f = { -> p.fst++ }
var get0 = f
f = { -> ++p.snd }
var get1 = f
var get2 = get1
f = { -> ++p.fst }
get2 = f
return run(get0) + run(get1) + run(get2)
}
fun box(): String {
val p = IntPair(0, 0)
assertEquals(3, bar(p))
assertEquals(IntPair(2, 1), p)
return "OK"
}