Minor. Drop unused parts
This commit is contained in:
+2
-77
@@ -26,7 +26,8 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
|||||||
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
|
||||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.KtExpression
|
||||||
|
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.BindingTraceContext
|
import org.jetbrains.kotlin.resolve.BindingTraceContext
|
||||||
import org.jetbrains.kotlin.resolve.DelegatingBindingTrace
|
import org.jetbrains.kotlin.resolve.DelegatingBindingTrace
|
||||||
@@ -36,14 +37,11 @@ import org.jetbrains.kotlin.resolve.calls.model.MutableDataFlowInfoForArguments
|
|||||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCallImpl
|
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCallImpl
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
|
||||||
import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind
|
|
||||||
import org.jetbrains.kotlin.resolve.calls.tasks.TracingStrategy
|
import org.jetbrains.kotlin.resolve.calls.tasks.TracingStrategy
|
||||||
import org.jetbrains.kotlin.resolve.calls.util.CallMaker
|
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||||
import org.jetbrains.kotlin.resolve.jvm.AsmTypes
|
import org.jetbrains.kotlin.resolve.jvm.AsmTypes
|
||||||
import org.jetbrains.kotlin.types.KotlinTypeFactory
|
import org.jetbrains.kotlin.types.KotlinTypeFactory
|
||||||
import org.jetbrains.kotlin.types.TypeConstructorSubstitution
|
import org.jetbrains.kotlin.types.TypeConstructorSubstitution
|
||||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
|
||||||
import org.jetbrains.kotlin.types.typeUtil.asTypeProjection
|
import org.jetbrains.kotlin.types.typeUtil.asTypeProjection
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||||
import org.jetbrains.org.objectweb.asm.Opcodes
|
import org.jetbrains.org.objectweb.asm.Opcodes
|
||||||
@@ -112,79 +110,6 @@ fun ResolvedCall<*>.replaceSuspensionFunctionWithRealDescriptor(
|
|||||||
return ResolvedCallWithRealDescriptor(newCall, thisExpression)
|
return ResolvedCallWithRealDescriptor(newCall, thisExpression)
|
||||||
}
|
}
|
||||||
|
|
||||||
data class HandleResultCallContext(
|
|
||||||
val resolvedCall: ResolvedCall<*>,
|
|
||||||
val exceptionExpression: KtExpression,
|
|
||||||
val continuationThisExpression: KtExpression
|
|
||||||
)
|
|
||||||
|
|
||||||
fun createResolvedCallForHandleExceptionCall(
|
|
||||||
callElement: KtElement,
|
|
||||||
handleExceptionFunction: SimpleFunctionDescriptor,
|
|
||||||
coroutineLambdaDescriptor: FunctionDescriptor
|
|
||||||
): HandleResultCallContext {
|
|
||||||
val psiFactory = KtPsiFactory(callElement)
|
|
||||||
|
|
||||||
val exceptionArgument = CallMaker.makeValueArgument(psiFactory.createExpression("exception"))
|
|
||||||
val continuationThisArgument = CallMaker.makeValueArgument(psiFactory.createExpression("this"))
|
|
||||||
|
|
||||||
val resolvedCall =
|
|
||||||
createFakeResolvedCall(
|
|
||||||
callElement,
|
|
||||||
coroutineLambdaDescriptor,
|
|
||||||
handleExceptionFunction,
|
|
||||||
listOf(exceptionArgument, continuationThisArgument)
|
|
||||||
)
|
|
||||||
|
|
||||||
return HandleResultCallContext(
|
|
||||||
resolvedCall, exceptionArgument.getArgumentExpression()!!, continuationThisArgument.getArgumentExpression()!!)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun createFakeResolvedCall(
|
|
||||||
element: KtElement,
|
|
||||||
coroutineLambdaDescriptor: FunctionDescriptor,
|
|
||||||
descriptor: SimpleFunctionDescriptor,
|
|
||||||
valueArguments: List<ValueArgument>
|
|
||||||
): ResolvedCallImpl<SimpleFunctionDescriptor> {
|
|
||||||
val call = CallMaker.makeCall(element, null, null, null, valueArguments)
|
|
||||||
|
|
||||||
val resolvedCall = ResolvedCallImpl(
|
|
||||||
call,
|
|
||||||
descriptor,
|
|
||||||
coroutineLambdaDescriptor.extensionReceiverParameter!!.value, null, ExplicitReceiverKind.NO_EXPLICIT_RECEIVER,
|
|
||||||
null, DelegatingBindingTrace(BindingTraceContext().bindingContext, "Temporary trace for handleException resolution"),
|
|
||||||
TracingStrategy.EMPTY, MutableDataFlowInfoForArguments.WithoutArgumentsCheck(DataFlowInfo.EMPTY))
|
|
||||||
|
|
||||||
descriptor.valueParameters.zip(valueArguments).forEach {
|
|
||||||
resolvedCall.recordValueArgument(it.first, ExpressionValueArgument(it.second))
|
|
||||||
}
|
|
||||||
|
|
||||||
resolvedCall.setResultingSubstitutor(TypeSubstitutor.EMPTY)
|
|
||||||
|
|
||||||
return resolvedCall
|
|
||||||
}
|
|
||||||
|
|
||||||
data class InterceptResumeCallContext(
|
|
||||||
val resolvedCall: ResolvedCall<*>,
|
|
||||||
val thisExpression: KtExpression
|
|
||||||
)
|
|
||||||
|
|
||||||
fun createResolvedCallForInterceptResume(
|
|
||||||
coroutineLambda: KtFunctionLiteral,
|
|
||||||
interceptResume: SimpleFunctionDescriptor,
|
|
||||||
coroutineLambdaDescriptor: FunctionDescriptor
|
|
||||||
): InterceptResumeCallContext {
|
|
||||||
val psiFactory = KtPsiFactory(coroutineLambda)
|
|
||||||
|
|
||||||
val isInline = interceptResume.isInline
|
|
||||||
val thisExpression = psiFactory.createExpression("this")
|
|
||||||
val blockArgument = CallMaker.makeValueArgument(if (isInline) coroutineLambda.parent as KtExpression else thisExpression)
|
|
||||||
|
|
||||||
val resolvedCall = createFakeResolvedCall(coroutineLambda, coroutineLambdaDescriptor, interceptResume, listOf(blockArgument))
|
|
||||||
|
|
||||||
return InterceptResumeCallContext(resolvedCall, thisExpression)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun ResolvedCall<*>.isSuspensionPoint(bindingContext: BindingContext) =
|
fun ResolvedCall<*>.isSuspensionPoint(bindingContext: BindingContext) =
|
||||||
bindingContext[BindingContext.ENCLOSING_SUSPEND_LAMBDA_FOR_SUSPENSION_POINT, call] != null
|
bindingContext[BindingContext.ENCLOSING_SUSPEND_LAMBDA_FOR_SUSPENSION_POINT, call] != null
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user