JVM: Suspend conversion for function references

This commit is contained in:
Dmitry Petrov
2020-04-23 15:20:44 +03:00
parent 6b9a7464f5
commit c7a96810bf
23 changed files with 886 additions and 25 deletions
@@ -0,0 +1,34 @@
// !LANGUAGE: +SuspendConversion
// WITH_RUNTIME
// WITH_COROUTINES
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM
// ^ this test hangs on JS_IR (even if it's IGNOREd)
// IGNORE_BACKEND: JVM_IR
import helpers.*
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
fun runSuspend(c: suspend () -> Unit) {
c.startCoroutine(EmptyContinuation)
}
inline suspend fun invokeSuspend(fn: suspend () -> Unit) = fn()
class C {
var test = "failed"
fun foo() {
test = "OK"
}
}
fun box(): String {
val c = C()
runSuspend {
invokeSuspend(c::foo)
}
return c.test
}