Files
kotlin-fork/compiler/testData/codegen/box/reflection/call/inlineClasses/suspendFunction.kt
T
2020-11-02 19:33:23 +01:00

35 lines
783 B
Kotlin
Vendored

// TARGET_BACKEND: JVM
// WITH_REFLECT
// WITH_COROUTINES
package test
import kotlin.coroutines.startCoroutine
import kotlin.reflect.full.callSuspend
import helpers.*
inline class Z(val value: String)
class S {
private var value: Z = Z("")
suspend fun consumeZ(z: Z) { value = z }
suspend fun produceZ(): Z = value
suspend fun consumeAndProduceZ(z: Z): Z = z
}
private fun run0(f: suspend () -> String): String {
var result = ""
f.startCoroutine(handleResultContinuation { result = it })
return result
}
fun box(): String =
run0 {
val s = S()
S::consumeZ.callSuspend(s, Z("z"))
val v = S::produceZ.callSuspend(s)
if (v != Z("z")) "Fail: $v"
else S::consumeAndProduceZ.callSuspend(s, Z("OK")).value
}