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.
This commit is contained in:
Svyatoslav Scherbina
2022-08-24 16:34:41 +02:00
committed by Space
parent e64b057131
commit 15fe2c2c5c
@@ -88,7 +88,7 @@ public actual fun <T> (suspend () -> T).createCoroutineUnintercepted(
create(probeCompletion)
else
createCoroutineFromSuspendFunction(probeCompletion) {
(this as Function1<Continuation<T>, Any?>).invoke(it)
this.startCoroutineUninterceptedOrReturn(it)
}
}
@@ -124,7 +124,7 @@ public actual fun <R, T> (suspend R.() -> T).createCoroutineUnintercepted(
create(receiver, probeCompletion)
else {
createCoroutineFromSuspendFunction(probeCompletion) {
(this as Function2<R, Continuation<T>, Any?>).invoke(receiver, it)
this.startCoroutineUninterceptedOrReturn(receiver, it)
}
}
}