Files
kotlin-fork/compiler/testData/codegen/box/funInterface/suspendFunInterfaceConversionCodegen.kt
T
Ivan Kylchik c7435ba760 Replace all occurrences of WITH_RUNTIME with WITH_STDLIB
We are going to deprecate `WITH_RUNTIME` directive. The main reason
behind this change is that `WITH_STDLIB` directive better describes
its meaning, specifically it will add kotlin stdlib to test's classpath.
2021-11-17 15:26:38 +03:00

40 lines
652 B
Kotlin
Vendored

// 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<Unit> { cont ->
resumingCallback = {
cont.resume(Unit)
}
}
result = "OK"
}
fun box(): String {
run(::bar)
if (result != "initial") return "fail"
resumingCallback()
return result
}