dd33ed9297
#KT-34024 Fixed
35 lines
783 B
Kotlin
Vendored
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
|
|
}
|