Minor. Inject CallComponents to CallCheckerContext

This commit is contained in:
Denis.Zharkov
2022-10-07 10:52:45 +02:00
committed by Space Team
parent 503f4d924d
commit 4b455c0e51
7 changed files with 31 additions and 16 deletions
@@ -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 <D : CallableDescriptor> 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)
@@ -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
@@ -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,
)
}
@@ -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)) {
@@ -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
@@ -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
);
}
@@ -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;
}
}