blob: 0b395fb53a12e8705f1efd07fbfc14b9d3f0909b [file]
// TARGET_BACKEND: WASM
// USE_NEW_EXCEPTION_HANDLING_PROPOSAL
// TODO: remove the test when KT-66906 will be resolved
fun unsupportedEx() {
if (true) throw UnsupportedOperationException()
}
fun runtimeEx() {
if (true) throw RuntimeException()
}
fun test1() : String {
var s = "";
try {
try {
s += "Try";
unsupportedEx()
} catch (x : UnsupportedOperationException) {
s += "Catch";
runtimeEx()
} catch (e: RuntimeException) {
s += "WrongCatch"
}
} catch (x : RuntimeException) {
return s
}
return s + "Failed"
}
fun test1WithFinally() : String {
var s = "";
try {
try {
s += "Try";
unsupportedEx()
} catch (x : UnsupportedOperationException) {
s += "Catch";
runtimeEx()
} catch (e: RuntimeException) {
s += "WrongCatch"
} finally {
s += "Finally"
}
} catch (x : RuntimeException) {
return s
}
return s + "Failed"
}
fun test2() : String {
var s = "";
try {
try {
s += "Try";
unsupportedEx()
return s
} catch (x : UnsupportedOperationException) {
s += "Catch";
runtimeEx()
return s
} catch (e: RuntimeException) {
s += "WrongCatch"
}
} catch (x : RuntimeException) {
return s
}
return s + "Failed"
}
fun test2WithFinally() : String {
var s = "";
try {
try {
s += "Try";
unsupportedEx()
return s
} catch (x : UnsupportedOperationException) {
s += "Catch";
runtimeEx()
return s
} catch (e: RuntimeException) {
s += "WrongCatch"
} finally {
s += "Finally"
}
} catch (x : RuntimeException) {
return s
}
return s + "Failed"
}
fun box() : String {
if (test1() != "TryCatch") return "fail1: ${test1()}"
if (test1WithFinally() != "TryCatchFinally") return "fail2: ${test1WithFinally()}"
if (test2() != "TryCatch") return "fail3: ${test2()}"
if (test2WithFinally() != "TryCatchFinally") return "fail4: ${test2WithFinally()}"
return "OK"
}