| // FILE: lib.kt | |
| package foo | |
| import kotlin.test.* | |
| data class IntPair(public var fst: Int, public var snd: Int) | |
| inline fun run(func: () -> Int): Int { | |
| return func() | |
| } | |
| // FILE: main.kt | |
| package foo | |
| import kotlin.test.* | |
| // CHECK_BREAKS_COUNT: function=bar count=0 | |
| // CHECK_LABELS_COUNT: function=bar name=$l$block count=0 | |
| 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" | |
| } |