Files
kotlin/compiler/testData/codegen/box/controlStructures/tryCatchInExpressions/inlineTryCatch.kt
Dmitry Petrov 4e42cc6b81 Save/restore stack in try-expressions (and statements).
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
2015-07-07 12:16:29 +03:00

18 lines
334 B
Kotlin
Vendored

inline fun <T> tryOrElse(f1: () -> T, f2: () -> T): T {
try {
return f1()
}
catch (e: Exception) {
return f2()
}
}
fun testIt() = "abc" + tryOrElse({ "def" }, { "oops" }) + "ghi"
fun box(): String {
val test = testIt()
if (test != "abcdefghi") return "Failed, test==$test"
return "OK"
}