| // SKIP_IR_DESERIALIZATION_CHECKS | |
| // LANGUAGE: +IrIntraModuleInlinerBeforeKlibSerialization -IrCrossModuleInlinerBeforeKlibSerialization | |
| // DUMP_IR_AFTER_INLINE | |
| // WITH_STDLIB | |
| // MODULE: lib | |
| // FILE: lib.kt | |
| inline fun <T> foo(arg: T, block: (T) -> Unit) { | |
| block(arg) | |
| } | |
| // MODULE: main(lib) | |
| // FILE: main.kt | |
| inline fun <T> inner(arg: T, block: (T) -> Unit) { | |
| foo(arg, block) | |
| } | |
| inline fun <T> wrap(arg: T, block: (T) -> Unit) { | |
| inner(arg, block) | |
| } | |
| fun box(): String { | |
| var x = "fail" | |
| wrap("OK") { | |
| foo(it) { | |
| x = it | |
| } | |
| } | |
| return x | |
| } |