// WITH_COROUTINES // WITH_STDLIB import helpers.* import kotlin.coroutines.* fun interface SuspendRunnable { @Suppress("FUN_INTERFACE_WITH_SUSPEND_FUNCTION") suspend fun invoke() } fun run(r: SuspendRunnable) { r::invoke.startCoroutine(EmptyContinuation) } var result = "initial" var resumingCallback: () -> Unit = {} suspend fun bar() { // Generate proper state machine suspendCoroutine { cont -> resumingCallback = { cont.resume(Unit) } } result = "OK" } fun box(): String { run(::bar) if (result != "initial") return "fail" resumingCallback() return result }