mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-08 15:53:19 +00:00
Parse TryCatchBlockNode's in generated bytecode, infer stack save/restore points. Save stack to local variables before 'try'. Restore stack after the beginning of try-block, catch-block, and default handler. Integrate before/after inline markers rewriting (otherwise it'll break our stacks). #KT-3309 Fixed
23 lines
407 B
Kotlin
Vendored
23 lines
407 B
Kotlin
Vendored
inline fun <T> tryAndThen(f1: () -> Unit, f2: () -> Unit, f3: () -> T): T {
|
|
try {
|
|
f1()
|
|
}
|
|
catch (e: Exception) {
|
|
f2()
|
|
}
|
|
finally {
|
|
return f3()
|
|
}
|
|
}
|
|
|
|
fun testIt() = "abc" +
|
|
tryAndThen({}, {}, { "def" }) +
|
|
"ghi"
|
|
|
|
fun box(): String {
|
|
val test = testIt()
|
|
if (test != "abcdefghi") return "Failed, test==$test"
|
|
|
|
return "OK"
|
|
}
|