Explanatory comment to createCoroutineFromSuspendFunction
This commit is contained in:
committed by
Denis Zharkov
parent
96b5bb1b31
commit
d3982472a4
@@ -134,6 +134,17 @@ public actual fun <T> Continuation<T>.intercepted(): Continuation<T> =
|
|||||||
|
|
||||||
// INTERNAL DEFINITIONS
|
// INTERNAL DEFINITIONS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function is used when [createCoroutineUnintercepted] encounters suspending lambda that does not extend BaseContinuationImpl.
|
||||||
|
*
|
||||||
|
* It happens in two cases:
|
||||||
|
* 1. Callable reference to suspending function,
|
||||||
|
* 2. Suspending function reference implemented by Java code.
|
||||||
|
*
|
||||||
|
* We must wrap it into an instance that extends [BaseContinuationImpl], because that is an expectation of all coroutines machinery.
|
||||||
|
* As an optimization we use lighter-weight [RestrictedContinuationImpl] base class (it has less fields) if the context is
|
||||||
|
* [EmptyCoroutineContext], and a full-blown [ContinuationImpl] class otherwise.
|
||||||
|
*/
|
||||||
@SinceKotlin("1.3")
|
@SinceKotlin("1.3")
|
||||||
private inline fun <T> createCoroutineFromSuspendFunction(
|
private inline fun <T> createCoroutineFromSuspendFunction(
|
||||||
completion: Continuation<T>,
|
completion: Continuation<T>,
|
||||||
|
|||||||
Reference in New Issue
Block a user