Force boxing kotlin.Result return type of suspend functions

#KT-40843 Fixed
This commit is contained in:
Ilmir Usmanov
2020-08-10 15:39:04 +02:00
parent b06218c456
commit 00bf07fc41
9 changed files with 69 additions and 4 deletions
@@ -0,0 +1,28 @@
// WITH_RUNTIME
// WITH_COROUTINES
import helpers.*
import kotlin.coroutines.*
fun builder(c: suspend () -> Unit) {
c.startCoroutine(EmptyContinuation)
}
var continuation: Continuation<Unit>? = null
suspend fun suspendMe() = suspendCoroutine<Unit> { continuation = it }
@Suppress("RESULT_CLASS_IN_RETURN_TYPE")
suspend fun signInFlowStepFirst(): Result<Unit> = try {
Result.success(suspendMe())
} catch (e: Exception) {
Result.failure(e)
}
fun box(): String {
builder {
signInFlowStepFirst()
}
continuation!!.resumeWithException(Exception("BOOYA"))
return "OK"
}