| // TARGET_BACKEND: WASM |
| // USE_NEW_EXCEPTION_HANDLING_PROPOSAL |
| // TODO: remove the test when KT-66906 will be resolved |
| // WITH_STDLIB |
| // WITH_COROUTINES |
| import helpers.* |
| import kotlin.coroutines.* |
| import kotlin.coroutines.intrinsics.* |
| |
| class Controller { |
| suspend fun suspendHere(v: String): String = suspendCoroutineUninterceptedOrReturn { x -> |
| x.resume(v) |
| |
| COROUTINE_SUSPENDED |
| } |
| } |
| |
| fun builder(c: suspend Controller.() -> Unit) { |
| c.startCoroutine(Controller(), EmptyContinuation) |
| } |
| |
| inline fun run(block: () -> Unit) { |
| block() |
| } |
| |
| fun box(): String { |
| var result = "" |
| run { |
| builder { |
| try { |
| result += suspendHere("O") |
| } finally { |
| result += suspendHere("K") |
| } |
| } |
| } |
| |
| return result |
| } |