From 15fe2c2c5c95d92800e293a9cf23f39272779532 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Wed, 24 Aug 2022 16:34:41 +0200 Subject: [PATCH] Native: remove code duplication in coroutine intrinsics implementation Make `createCoroutineUnintercepted` invoke `startCoroutineUninterceptedOrReturn` when suspend function object is not a `BaseContinuationImpl` (e.g. for a custom suspend function type subclass), instead of using the copy of its implementation. --- .../kotlin/kotlin/coroutines/intrinsics/IntrinsicsNative.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 854a5e192e0..a9c88b5e08d 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 @@ -88,7 +88,7 @@ public actual fun (suspend () -> T).createCoroutineUnintercepted( create(probeCompletion) else createCoroutineFromSuspendFunction(probeCompletion) { - (this as Function1, Any?>).invoke(it) + this.startCoroutineUninterceptedOrReturn(it) } } @@ -124,7 +124,7 @@ public actual fun (suspend R.() -> T).createCoroutineUnintercepted( create(receiver, probeCompletion) else { createCoroutineFromSuspendFunction(probeCompletion) { - (this as Function2, Any?>).invoke(receiver, it) + this.startCoroutineUninterceptedOrReturn(receiver, it) } } }