JVM_IR: generate continuation classes for suspend inline references

This is somewhat suboptimal since this results in `::suspendInline`
generating 2 classes while `{ suspendInline() }` only creates 1, but
it's the best allowed by the existing hierarchy of classes in stdlib. At
least it works?

^KT-50832 Fixed
This commit is contained in:
pyos
2022-05-09 14:28:44 +02:00
committed by teamcity
parent 9f31f074da
commit b19b265735
11 changed files with 82 additions and 4 deletions
@@ -0,0 +1,25 @@
// WITH_STDLIB
// WITH_COROUTINES
// IGNORE_BACKEND: JVM, JS
import helpers.*
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere() = suspendCoroutineUninterceptedOrReturn {
it.resume(Unit)
COROUTINE_SUSPENDED
}
suspend inline fun foo(): String {
suspendHere()
return "OK"
}
fun box(): String {
var result = ""
suspend {
val ref = ::foo
result = ref()
}.startCoroutine(EmptyContinuation)
return result
}