Files
kotlin/compiler/testData/codegen/box/finally/tryLoopTry.kt
Mikhael Bogdanov 185b5013fe Properly process nested try and loop blocks
KT-3894: Loops and finally: finally block executed twice when break and return exists in try/finally block
KT-3874: Compilation error on try catch block contains break and continue
KT-3869: Loops and finally: outer finally block not run

 #KT-3869 Fixed
 #KT-3894 Fixed
 #KT-3874 Fixed
2013-08-19 16:06:56 +04:00

36 lines
610 B
Kotlin

//test for appropriate
class MyString {
var s = ""
fun plus(x : String) : MyString {
s += x
return this
}
fun toString(): String {
return s
}
}
fun test1() : MyString {
var r = MyString()
try {
r + "Try1"
for(i in 1..1) {
try {
r + "Try2"
} finally {
return r + "Finally2"
}
}
} finally {
r + "Finally1"
}
return r + "Fail"
}
fun box(): String {
return if (test1().toString() == "Try1Try2Finally2Finally1") "OK" else "fail: ${test1()}"
}