| /* |
| * Copy of JVM-backend test |
| * Found at: compiler/testData/codegen/boxInline/simple/simpleLambda.1.kt |
| */ |
| |
| // FILE: lib.kt |
| package foo |
| public class Data() |
| |
| public inline fun <T, R> T.use(block: (T)-> R) : R { |
| return block(this) |
| } |
| |
| public inline fun use2() : Int { |
| val s = 100 |
| return s |
| } |
| |
| class Z {} |
| |
| // FILE: main.kt |
| package foo |
| // CHECK_BREAKS_COUNT: function=test1 count=0 |
| // CHECK_LABELS_COUNT: function=test1 name=$l$block count=0 |
| fun test1() : Int { |
| val input = Z() |
| return input.use<Z, Int>{ |
| 100 |
| } |
| } |
| |
| // CHECK_BREAKS_COUNT: function=test2 count=0 |
| // CHECK_LABELS_COUNT: function=test2 name=$l$block count=0 |
| fun test2() : Int { |
| val x = 1000 |
| return use2() + x |
| } |
| |
| |
| fun box(): String { |
| if (test1() != 100) return "test1: ${test1()}" |
| if (test2() != 1100) return "test1: ${test2()}" |
| |
| return "OK" |
| } |