提交 90c8e353 编写于 作者: D Denis Zharkov

Minor. Drop unused parts

上级 a9e9f36e
......@@ -26,7 +26,8 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
import org.jetbrains.kotlin.load.java.JvmAbi
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.BindingTraceContext
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.ResolvedCallImpl
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.util.CallMaker
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
import org.jetbrains.kotlin.resolve.jvm.AsmTypes
import org.jetbrains.kotlin.types.KotlinTypeFactory
import org.jetbrains.kotlin.types.TypeConstructorSubstitution
import org.jetbrains.kotlin.types.TypeSubstitutor
import org.jetbrains.kotlin.types.typeUtil.asTypeProjection
import org.jetbrains.kotlin.util.OperatorNameConventions
import org.jetbrains.org.objectweb.asm.Opcodes
......@@ -112,79 +110,6 @@ fun ResolvedCall<*>.replaceSuspensionFunctionWithRealDescriptor(
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) =
bindingContext[BindingContext.ENCLOSING_SUSPEND_LAMBDA_FOR_SUSPENSION_POINT, call] != null
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册