Files
kotlin-fork/compiler/testData/codegen/box/finally/kt3867.kt
T
Mikhael Bogdanov d0f042ba93 Properly generate exception table for try/catch block
KT-3549 'Finally' block not run when re-throwing exception
KT-3867 When catched exception occurs in finnaly block it invokes additional catch and itself

  #KT-3549 Fixed
  #KT-3867 Fixed
2013-08-19 16:06:56 +04:00

46 lines
866 B
Kotlin

fun fail() = if (true) throw RuntimeException() else 1
fun test1(): String {
var r = ""
try {
try {
r += "Try"
return r
} catch (e: RuntimeException) {
r += "Catch"
return r
}
finally {
r += "Finally"
fail()
}
} catch (e: RuntimeException) {
return r
}
}
fun test2(): String {
var r = ""
try {
try {
r += "Try"
} catch (e: RuntimeException) {
r += "Catch"
}
finally {
r += "Finally"
fail()
}
} catch (e: RuntimeException) {
return r
}
return r + "Fail"
}
fun box(): String {
if (test1() != "TryFinally") return "fail1: ${test1()}"
if (test2() != "TryFinally") return "fail2: ${test2()}"
return "OK"
}