mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-08 15:53:19 +00:00
Parse TryCatchBlockNode's in generated bytecode, infer stack save/restore points. Save stack to local variables before 'try'. Restore stack after the beginning of try-block, catch-block, and default handler. Integrate before/after inline markers rewriting (otherwise it'll break our stacks). #KT-3309 Fixed
35 lines
590 B
Kotlin
Vendored
35 lines
590 B
Kotlin
Vendored
public inline fun fails(block: () -> Unit): Throwable? {
|
|
var thrown: Throwable? = null
|
|
try {
|
|
block()
|
|
} catch (e: Throwable) {
|
|
thrown = e
|
|
}
|
|
if (thrown == null)
|
|
throw Exception("Expected an exception to be thrown")
|
|
return thrown
|
|
}
|
|
|
|
public inline fun throwIt(msg: String) {
|
|
throw Exception(msg)
|
|
}
|
|
|
|
fun box(): String {
|
|
fails {
|
|
throwIt("oops!")
|
|
}
|
|
|
|
var x = 0
|
|
try {
|
|
fails {
|
|
x = 1
|
|
}
|
|
}
|
|
catch (e: Exception) {
|
|
x = 2
|
|
}
|
|
|
|
if (x != 2) return "Failed: x==$x"
|
|
|
|
return "OK"
|
|
} |