From 719d45510ac69602ab2e58668ac97347dba51b49 Mon Sep 17 00:00:00 2001 From: Roman Elizarov Date: Thu, 28 Jun 2018 17:34:48 +0300 Subject: [PATCH] Continuation builder function --- .../src/kotlin/coroutines/Continuation.kt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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.