06b23d5937
1. throw goes to catches instead of main exist block 2. return goes via finally (single level only supported atm) 3. collect non-direct return to retrieve all return expressions easier
23 lines
428 B
Kotlin
Vendored
23 lines
428 B
Kotlin
Vendored
// FILE: 1.kt
|
|
class A(val s: String)
|
|
|
|
inline fun inlineMe(limit: Int, c: (String) -> String): A {
|
|
var index = 0
|
|
var res: A?
|
|
while (true) {
|
|
res = A(c(try {
|
|
throw IllegalStateException("")
|
|
} catch (ignored: Throwable) {
|
|
"OK"
|
|
})
|
|
)
|
|
if (index++ == limit) break
|
|
}
|
|
return res!!
|
|
}
|
|
|
|
// FILE: 2.kt
|
|
fun box(): String {
|
|
return inlineMe(1) { "OK" }.s
|
|
}
|