Files
kotlin/compiler/testData/codegen/box/controlStructures/tryCatchInExpressions/tryAndBreak.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

19 lines
380 B
Kotlin
Vendored

fun idiv(a: Int, b: Int): Int =
if (b == 0) throw Exception("Division by zero") else a / b
fun foo(): Int {
var sum = 0
var i = 2
while (i > -10) {
sum += try { idiv(100, i) } catch (e: Exception) { break }
i--
}
return sum
}
fun box(): String {
val test = foo()
if (test != 150) return "Failed, test=$test"
return "OK"
}