mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-08 08:31:26 +00:00
69 lines
1.2 KiB
Kotlin
Vendored
69 lines
1.2 KiB
Kotlin
Vendored
//KT-3869 Loops and finally: outer finally block not run
|
|
|
|
class MyString {
|
|
var s = ""
|
|
operator fun plus(x : String) : MyString {
|
|
s += x
|
|
return this
|
|
}
|
|
|
|
override fun toString(): String {
|
|
return s
|
|
}
|
|
}
|
|
|
|
fun test1() : MyString {
|
|
var r = MyString()
|
|
try {
|
|
r + "Try"
|
|
|
|
while(r.toString() != "") {
|
|
return r + "Loop"
|
|
}
|
|
|
|
return r + "Fail"
|
|
} finally {
|
|
r + "Finally"
|
|
}
|
|
}
|
|
|
|
fun test2() : MyString {
|
|
var r = MyString()
|
|
try {
|
|
r + "Try"
|
|
|
|
do {
|
|
if (r.toString() != "") {
|
|
return r + "Loop"
|
|
}
|
|
} while (r.toString() != "")
|
|
|
|
return r + "Fail"
|
|
} finally {
|
|
r + "Finally"
|
|
}
|
|
}
|
|
|
|
fun test3() : MyString {
|
|
var r = MyString()
|
|
try {
|
|
r + "Try"
|
|
|
|
for(i in 1..2) {
|
|
r + "Loop"
|
|
return r
|
|
}
|
|
|
|
return r + "Fail"
|
|
} finally {
|
|
r + "Finally"
|
|
}
|
|
}
|
|
|
|
fun box(): String {
|
|
if (test1().toString() != "TryLoopFinally") return "fail1: ${test1()}"
|
|
if (test2().toString() != "TryLoopFinally") return "fail2: ${test2()}"
|
|
if (test3().toString() != "TryLoopFinally") return "fail3: ${test3()}"
|
|
|
|
return "OK"
|
|
} |