From 4b455c0e51c230d3cbe4b3c193dd47290c99a229 Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Fri, 7 Oct 2022 10:52:45 +0200 Subject: [PATCH] Minor. Inject CallComponents to CallCheckerContext --- .../kotlin/resolve/calls/CallCompleter.kt | 14 ++++++-------- .../kotlin/resolve/calls/checkers/CallChecker.kt | 2 ++ .../calls/inference/BuilderInferenceSession.kt | 3 ++- .../calls/tower/KotlinToResolvedCallTransformer.kt | 8 +++++--- .../resolve/calls/tower/ResolvedAtomCompleter.kt | 8 +++++--- .../expressions/BasicExpressionTypingVisitor.java | 4 +++- .../expressions/ExpressionTypingComponents.java | 8 ++++++++ 7 files changed, 31 insertions(+), 16 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallCompleter.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallCompleter.kt index 499a4ec28d5..86725c05fe7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallCompleter.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallCompleter.kt @@ -17,11 +17,6 @@ import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.BindingContext.CONSTRAINT_SYSTEM_COMPLETER -import org.jetbrains.kotlin.resolve.calls.util.ResolveArgumentsMode.RESOLVE_FUNCTION_ARGUMENTS -import org.jetbrains.kotlin.resolve.calls.util.getEffectiveExpectedType -import org.jetbrains.kotlin.resolve.calls.util.isInvokeCallOnVariable -import org.jetbrains.kotlin.resolve.calls.util.isCallableReference -import org.jetbrains.kotlin.resolve.calls.util.isFakeElement import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker import org.jetbrains.kotlin.resolve.calls.checkers.CallCheckerContext import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext @@ -34,12 +29,13 @@ import org.jetbrains.kotlin.resolve.calls.inference.constraintPosition.Constrain import org.jetbrains.kotlin.resolve.calls.inference.filterConstraintsOut import org.jetbrains.kotlin.resolve.calls.inference.toHandle import org.jetbrains.kotlin.resolve.calls.model.* -import org.jetbrains.kotlin.resolve.calls.util.makeNullableTypeIfSafeReceiver import org.jetbrains.kotlin.resolve.calls.results.OverloadResolutionResultsImpl import org.jetbrains.kotlin.resolve.calls.results.ResolutionStatus import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory import org.jetbrains.kotlin.resolve.calls.tasks.TracingStrategy +import org.jetbrains.kotlin.resolve.calls.util.* +import org.jetbrains.kotlin.resolve.calls.util.ResolveArgumentsMode.RESOLVE_FUNCTION_ARGUMENTS import org.jetbrains.kotlin.resolve.checkers.MissingDependencySupertypeChecker import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant import org.jetbrains.kotlin.resolve.constants.IntegerValueTypeConstant @@ -61,7 +57,8 @@ class CallCompleter( private val deprecationResolver: DeprecationResolver, private val effectSystem: EffectSystem, private val dataFlowValueFactory: DataFlowValueFactory, - private val missingSupertypesResolver: MissingSupertypesResolver + private val missingSupertypesResolver: MissingSupertypesResolver, + private val callComponents: KotlinCallComponents, ) { fun completeCall( context: BasicCallResolutionContext, @@ -90,7 +87,8 @@ class CallCompleter( if (calleeExpression != null && !calleeExpression.isFakeElement) calleeExpression else resolvedCall.call.callElement - val callCheckerContext = CallCheckerContext(context, deprecationResolver, moduleDescriptor, missingSupertypesResolver) + val callCheckerContext = + CallCheckerContext(context, deprecationResolver, moduleDescriptor, missingSupertypesResolver, callComponents) for (callChecker in callCheckers) { callChecker.check(resolvedCall, reportOn, callCheckerContext) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/CallChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/CallChecker.kt index 60875e30575..64ad6cfa191 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/CallChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/CallChecker.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.MissingSupertypesResolver import org.jetbrains.kotlin.resolve.calls.context.ResolutionContext +import org.jetbrains.kotlin.resolve.calls.model.KotlinCallComponents import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory @@ -44,6 +45,7 @@ class CallCheckerContext @JvmOverloads constructor( override val deprecationResolver: DeprecationResolver, override val moduleDescriptor: ModuleDescriptor, val missingSupertypesResolver: MissingSupertypesResolver, + val callComponents: KotlinCallComponents, override val trace: BindingTrace = resolutionContext.trace ) : CheckerContext { val scope: LexicalScope diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceSession.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceSession.kt index 86e4382cecd..af56838c0ac 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceSession.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceSession.kt @@ -567,7 +567,8 @@ class BuilderInferenceSession( return ResolvedAtomCompleter( resultSubstitutor, context, kotlinToResolvedCallTransformer, expressionTypingServices, argumentTypeResolver, doubleColonExpressionResolver, builtIns, - deprecationResolver, moduleDescriptor, context.dataFlowValueFactory, typeApproximator, missingSupertypesResolver + deprecationResolver, moduleDescriptor, context.dataFlowValueFactory, typeApproximator, missingSupertypesResolver, + callComponents, ) } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinToResolvedCallTransformer.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinToResolvedCallTransformer.kt index 1012e9ef3cc..45e2285315a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinToResolvedCallTransformer.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinToResolvedCallTransformer.kt @@ -14,9 +14,6 @@ import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver import org.jetbrains.kotlin.resolve.calls.CallTransformer import org.jetbrains.kotlin.resolve.calls.DiagnosticReporterByTrackingStrategy -import org.jetbrains.kotlin.resolve.calls.util.getEffectiveExpectedType -import org.jetbrains.kotlin.resolve.calls.util.getResolvedCall -import org.jetbrains.kotlin.resolve.calls.util.isFakeElement import org.jetbrains.kotlin.resolve.calls.checkers.AdditionalTypeChecker import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker import org.jetbrains.kotlin.resolve.calls.checkers.CallCheckerContext @@ -29,6 +26,9 @@ import org.jetbrains.kotlin.resolve.calls.model.* import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory import org.jetbrains.kotlin.resolve.calls.smartcasts.SmartCastManager import org.jetbrains.kotlin.resolve.calls.tasks.TracingStrategy +import org.jetbrains.kotlin.resolve.calls.util.getEffectiveExpectedType +import org.jetbrains.kotlin.resolve.calls.util.getResolvedCall +import org.jetbrains.kotlin.resolve.calls.util.isFakeElement import org.jetbrains.kotlin.resolve.calls.util.makeNullableTypeIfSafeReceiver import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant import org.jetbrains.kotlin.resolve.constants.IntegerLiteralTypeConstructor @@ -62,6 +62,7 @@ class KotlinToResolvedCallTransformer( private val typeApproximator: TypeApproximator, private val missingSupertypesResolver: MissingSupertypesResolver, private val candidateInterceptor: CandidateInterceptor, + private val callComponents: KotlinCallComponents, ) { companion object { private val REPORT_MISSING_NEW_INFERENCE_DIAGNOSTIC @@ -127,6 +128,7 @@ class KotlinToResolvedCallTransformer( resultSubstitutor, context, this, expressionTypingServices, argumentTypeResolver, doubleColonExpressionResolver, builtIns, deprecationResolver, moduleDescriptor, dataFlowValueFactory, typeApproximator, missingSupertypesResolver, + callComponents, ) if (context.inferenceSession.shouldCompleteResolvedSubAtomsOf(candidate)) { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt index aa739a64c7e..539bb518184 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt @@ -61,10 +61,11 @@ class ResolvedAtomCompleter( private val moduleDescriptor: ModuleDescriptor, private val dataFlowValueFactory: DataFlowValueFactory, private val typeApproximator: TypeApproximator, - private val missingSupertypesResolver: MissingSupertypesResolver + private val missingSupertypesResolver: MissingSupertypesResolver, + private val callComponents: KotlinCallComponents, ) { private val topLevelCallCheckerContext = CallCheckerContext( - topLevelCallContext, deprecationResolver, moduleDescriptor, missingSupertypesResolver + topLevelCallContext, deprecationResolver, moduleDescriptor, missingSupertypesResolver, callComponents, ) private val topLevelTrace = topLevelCallCheckerContext.trace @@ -186,7 +187,8 @@ class ResolvedAtomCompleter( resolutionContextForPartialCall.replaceBindingTrace(topLevelTrace), deprecationResolver, moduleDescriptor, - missingSupertypesResolver + missingSupertypesResolver, + callComponents, ) else topLevelCallCheckerContext diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java index 9b8e9c6b328..f34a508899f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java @@ -978,6 +978,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { components.deprecationResolver, components.moduleDescriptor, components.missingSupertypesResolver, + components.callComponents, trace ); for (CallChecker checker : components.callCheckers) { @@ -1064,7 +1065,8 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { context, components.deprecationResolver, components.moduleDescriptor, - components.missingSupertypesResolver + components.missingSupertypesResolver, + components.callComponents ); } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingComponents.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingComponents.java index ecc0eb04be7..cb72788da86 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingComponents.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingComponents.java @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; import org.jetbrains.kotlin.resolve.calls.CallResolver; import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker; import org.jetbrains.kotlin.resolve.calls.checkers.RttiExpressionChecker; +import org.jetbrains.kotlin.resolve.calls.model.KotlinCallComponents; import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory; import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator; import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver; @@ -69,6 +70,8 @@ public class ExpressionTypingComponents { public MissingSupertypesResolver missingSupertypesResolver; public AnnotationChecker annotationChecker; + public KotlinCallComponents callComponents; + @Inject public void setGlobalContext(@NotNull GlobalContext globalContext) { @@ -264,4 +267,9 @@ public class ExpressionTypingComponents { public void setAnnotationChecker(@NotNull AnnotationChecker annotationChecker) { this.annotationChecker = annotationChecker; } + + @Inject + public void setCallComponents(@NotNull KotlinCallComponents callComponents) { + this.callComponents = callComponents; + } }