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
53 lines
1.4 KiB
Kotlin
Vendored
53 lines
1.4 KiB
Kotlin
Vendored
fun cleanup() {}
|
|
|
|
inline fun concat(x: String, y: String): String = x + y
|
|
|
|
inline fun throws() {
|
|
try {
|
|
throw Exception()
|
|
}
|
|
finally {
|
|
cleanup()
|
|
}
|
|
}
|
|
|
|
inline fun first(x: String, y: String): String = x
|
|
|
|
fun box(): String =
|
|
"" + concat(
|
|
try { "" } finally { "0" },
|
|
"" + concat(
|
|
first(
|
|
try {
|
|
try {
|
|
"O"
|
|
}
|
|
finally {
|
|
"1"
|
|
}
|
|
}
|
|
catch (e: Exception) {
|
|
throw e
|
|
}
|
|
finally {
|
|
cleanup()
|
|
},
|
|
"2"
|
|
),
|
|
first(
|
|
try {
|
|
throws()
|
|
throw Exception()
|
|
"3"
|
|
}
|
|
catch (e: Exception) {
|
|
"K"
|
|
}
|
|
finally {
|
|
cleanup()
|
|
},
|
|
"4"
|
|
)
|
|
)
|
|
)
|