Refine definition of whether call is suspension point
It's not about all calls to suspend functions, they may called from non-coroutine code
This commit is contained in:
@@ -17,10 +17,13 @@
|
||||
package org.jetbrains.kotlin.resolve.coroutine
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
|
||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
|
||||
val SUSPENSION_POINT_KEY: FunctionDescriptor.UserDataKey<Boolean> = object : FunctionDescriptor.UserDataKey<Boolean> {}
|
||||
|
||||
// Returns suspension function as it's visible within coroutines:
|
||||
// E.g. `fun <V> await(f: CompletableFuture<V>): V` instead of `fun <V> await(f: CompletableFuture<V>, machine: Continuation<V>): Unit`
|
||||
fun SimpleFunctionDescriptor.createCoroutineSuspensionFunctionView(): SimpleFunctionDescriptor? {
|
||||
@@ -37,6 +40,7 @@ fun SimpleFunctionDescriptor.createCoroutineSuspensionFunctionView(): SimpleFunc
|
||||
setOriginal(newOriginal)
|
||||
setValueParameters(valueParameters.subList(0, valueParameters.size - 1))
|
||||
setSignatureChange()
|
||||
putUserData(SUSPENSION_POINT_KEY, true)
|
||||
}.build()!!
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user