| // TARGET_BACKEND: JVM | |
| // This test is just a cropped copy of `boxInline/nonLocalReturns/tryFinally/chained/nestedLambda.kt` | |
| // FILE: 1.kt | |
| package test | |
| class Holder { | |
| var value: String = "" | |
| } | |
| inline fun <R> doCall(block: ()-> R, h: Holder) : R { | |
| try { | |
| return block() | |
| } finally { | |
| h.value += ", in doCall finally" | |
| } | |
| } | |
| // FILE: 2.kt | |
| import test.* | |
| inline fun test2(holder: Holder, l: (s: Int) -> Unit): String { | |
| try { | |
| var externalResult = doCall (ext@ { | |
| l(1) | |
| }, holder) | |
| return "fail" | |
| } | |
| finally { | |
| holder.value += ", in global finally" | |
| } | |
| } | |
| fun box(): String { | |
| var holder = Holder() | |
| return "OK" | |
| } |