From 3078e5a6ff48277bafed69df219820da18d2acef Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Thu, 15 Mar 2018 14:22:31 +0300 Subject: [PATCH] [NI] Simplify creation of resolution callbacks --- .../calls/tower/KotlinResolutionCallbacksImpl.kt | 11 ++++------- .../kotlin/resolve/calls/tower/PSICallResolver.kt | 8 ++++++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionCallbacksImpl.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionCallbacksImpl.kt index bb32d0467f2..16e7000c363 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionCallbacksImpl.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionCallbacksImpl.kt @@ -20,8 +20,8 @@ import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.TemporaryBindingTrace import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver +import org.jetbrains.kotlin.resolve.calls.components.InferenceSession import org.jetbrains.kotlin.resolve.calls.components.KotlinResolutionCallbacks -import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext import org.jetbrains.kotlin.resolve.calls.context.ContextDependency import org.jetbrains.kotlin.resolve.calls.model.LambdaKotlinCallArgument import org.jetbrains.kotlin.resolve.calls.model.ReceiverKotlinCallArgument @@ -45,17 +45,16 @@ import org.jetbrains.kotlin.utils.addIfNotNull import org.jetbrains.kotlin.utils.addToStdlib.safeAs class KotlinResolutionCallbacksImpl( - topLevelCallContext: BasicCallResolutionContext, + val trace: BindingTrace, val expressionTypingServices: ExpressionTypingServices, val typeApproximator: TypeApproximator, val argumentTypeResolver: ArgumentTypeResolver, val languageVersionSettings: LanguageVersionSettings, val kotlinToResolvedCallTransformer: KotlinToResolvedCallTransformer, val constantExpressionEvaluator: ConstantExpressionEvaluator, - val dataFlowValueFactory: DataFlowValueFactory + val dataFlowValueFactory: DataFlowValueFactory, + override val inferenceSession: InferenceSession ) : KotlinResolutionCallbacks { - val trace: BindingTrace = topLevelCallContext.trace - class LambdaInfo(val expectedType: UnwrappedType, val contextDependency: ContextDependency) { var dataFlowInfoAfter: DataFlowInfo? = null val returnStatements = ArrayList>() @@ -182,8 +181,6 @@ class KotlinResolutionCallbacksImpl( return constantExpressionEvaluator.evaluateExpression(expression, temporaryBindingTrace, expectedType) != null } - override val inferenceSession = topLevelCallContext.inferenceSession - private fun findCommonParent(callElement: KtExpression, receiver: ReceiverKotlinCallArgument?): KtExpression { if (receiver == null) return callElement return PsiTreeUtil.findCommonParent(callElement, receiver.psiExpression)?.safeAs() ?: callElement diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt index 5638148e4bd..8e629915a52 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.createLookupLocation import org.jetbrains.kotlin.resolve.calls.callUtil.getCall import org.jetbrains.kotlin.resolve.calls.callUtil.getCalleeExpressionIfAny import org.jetbrains.kotlin.resolve.calls.callUtil.isSafeCall +import org.jetbrains.kotlin.resolve.calls.components.InferenceSession import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext import org.jetbrains.kotlin.resolve.calls.context.ContextDependency import org.jetbrains.kotlin.resolve.calls.inference.buildResultingSubstitutor @@ -150,10 +151,13 @@ class PSICallResolver( } private fun createResolutionCallbacks(context: BasicCallResolutionContext) = + createResolutionCallbacks(context.trace, context.inferenceSession) + + fun createResolutionCallbacks(trace: BindingTrace, inferenceSession: InferenceSession) = KotlinResolutionCallbacksImpl( - context, expressionTypingServices, typeApproximator, + trace, expressionTypingServices, typeApproximator, argumentTypeResolver, languageVersionSettings, kotlinToResolvedCallTransformer, - constantExpressionEvaluator, dataFlowValueFactory + constantExpressionEvaluator, dataFlowValueFactory, inferenceSession ) private fun calculateExpectedType(context: BasicCallResolutionContext): UnwrappedType? {