Updated exception table generation: try block return moved to uncatched interval

#KT-8148 Fixed
This commit is contained in:
Michael Bogdanov
2015-06-09 16:25:03 +03:00
parent 11ab2148b2
commit 93c5a52d13
7 changed files with 154 additions and 25 deletions
@@ -0,0 +1,29 @@
class A(var value: String)
fun box(): String {
val a = A("start")
try {
test(a)
} catch(e: java.lang.RuntimeException) {
}
if (a.value != "start, try, finally1, finally2") return "fail: ${a.value}"
return "OK"
}
fun test(a: A) : String {
try {
try {
a.value += ", try"
return a.value
} finally {
a.value += ", finally1"
}
} finally {
a.value += ", finally2"
throw RuntimeException("fail")
}
}
@@ -0,0 +1,33 @@
class A(var value: String)
fun box(): String {
val a = A("start")
try {
test(a)
} catch(e: java.lang.RuntimeException) {
}
if (a.value != "start, try, finally1, finally2") return "fail: ${a.value}"
return "OK"
}
fun test(a: A) : String {
while (true) {
try {
try {
a.value += ", try"
break
}
finally {
a.value += ", finally1"
}
}
finally {
a.value += ", finally2"
throw RuntimeException("fail")
}
}
}
@@ -0,0 +1,34 @@
class A(var value: String)
fun box(): String {
val a = A("start")
try {
test(a)
} catch(e: java.lang.RuntimeException) {
}
if (a.value != "start, try, finally1, finally2") return "fail: ${a.value}"
return "OK"
}
fun test(a: A) : String {
while (a.value == "start") {
try {
try {
a.value += ", try"
continue
}
finally {
a.value += ", finally1"
}
}
finally {
a.value += ", finally2"
throw RuntimeException("fail")
}
}
return "fail"
}