diff --git a/libraries/stdlib/coroutines/src/kotlin/coroutines/Continuation.kt b/libraries/stdlib/coroutines/src/kotlin/coroutines/Continuation.kt index 78c24652b4f..68c788bf5e7 100644 --- a/libraries/stdlib/coroutines/src/kotlin/coroutines/Continuation.kt +++ b/libraries/stdlib/coroutines/src/kotlin/coroutines/Continuation.kt @@ -53,6 +53,23 @@ public annotation class RestrictsSuspension @InlineOnly public inline fun Continuation.resumeWithException(exception: Throwable): Unit = resumeWith(SuccessOrFailure.failure(exception)) + +/** + * Creates [Continuation] instance with a given [context] and a given implementation of [resumeWith] method. + */ +@SinceKotlin("1.3") +@InlineOnly public inline fun Continuation( + context: CoroutineContext = EmptyCoroutineContext, + crossinline resumeWith: (SuccessOrFailure) -> Unit +): Continuation = + object : Continuation { + override val context: CoroutineContext + get() = context + + override fun resumeWith(result: SuccessOrFailure) = + resumeWith(result) + } + /** * Creates a coroutine without receiver and with result type [T]. * This function creates a new, fresh instance of suspendable computation every time it is invoked.