diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/coroutines/intrinsics/IntrinsicsNative.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/coroutines/intrinsics/IntrinsicsNative.kt index 9fbe20dfaf1..0b96621ece8 100644 --- a/kotlin-native/runtime/src/main/kotlin/kotlin/coroutines/intrinsics/IntrinsicsNative.kt +++ b/kotlin-native/runtime/src/main/kotlin/kotlin/coroutines/intrinsics/IntrinsicsNative.kt @@ -26,14 +26,12 @@ import kotlin.native.internal.* public actual inline fun (suspend () -> T).startCoroutineUninterceptedOrReturn( completion: Continuation ): Any? { + val wrappedCompletion = wrapWithContinuationImpl(completion) val function = this as? Function1, Any?> return if (function == null) - startCoroutineUninterceptedOrReturnFallback(this, completion) - else { - function.invoke( - completion.takeIf { this is BaseContinuationImpl } ?: wrapWithContinuationImpl(completion) - ) - } + startCoroutineUninterceptedOrReturnFallback(this, wrappedCompletion) + else + function.invoke(wrappedCompletion) } @Suppress("UNCHECKED_CAST") @@ -66,14 +64,12 @@ public actual inline fun (suspend R.() -> T).startCoroutineUninterceptedO receiver: R, completion: Continuation ): Any? { + val wrappedCompletion = wrapWithContinuationImpl(completion) val function = this as? Function2, Any?> return if (function == null) - startCoroutineUninterceptedOrReturnFallback(this, receiver, completion) - else { - function.invoke(receiver, - completion.takeIf { this is BaseContinuationImpl } ?: wrapWithContinuationImpl(completion) - ) - } + startCoroutineUninterceptedOrReturnFallback(this, receiver, wrappedCompletion) + else + function.invoke(receiver, wrappedCompletion) } @Suppress("UNCHECKED_CAST") @@ -96,14 +92,12 @@ internal actual inline fun (suspend R.(P) -> T).startCoroutineUninterc param: P, completion: Continuation ): Any? { + val wrappedCompletion = wrapWithContinuationImpl(completion) val function = this as? Function3, Any?> return if (function == null) - startCoroutineUninterceptedOrReturnFallback(this, receiver, param, completion) - else { - function.invoke(receiver, param, - completion.takeIf { this is BaseContinuationImpl } ?: wrapWithContinuationImpl(completion) - ) - } + startCoroutineUninterceptedOrReturnFallback(this, receiver, param, wrappedCompletion) + else + function.invoke(receiver, param, wrappedCompletion) } @Suppress("UNCHECKED_CAST")