Minor. Inject CallComponents to CallCheckerContext
This commit is contained in:
committed by
Space Team
parent
503f4d924d
commit
4b455c0e51
@@ -17,11 +17,6 @@ import org.jetbrains.kotlin.diagnostics.Errors
|
|||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext.CONSTRAINT_SYSTEM_COMPLETER
|
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.CallChecker
|
||||||
import org.jetbrains.kotlin.resolve.calls.checkers.CallCheckerContext
|
import org.jetbrains.kotlin.resolve.calls.checkers.CallCheckerContext
|
||||||
import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
|
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.filterConstraintsOut
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.toHandle
|
import org.jetbrains.kotlin.resolve.calls.inference.toHandle
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.*
|
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.OverloadResolutionResultsImpl
|
||||||
import org.jetbrains.kotlin.resolve.calls.results.ResolutionStatus
|
import org.jetbrains.kotlin.resolve.calls.results.ResolutionStatus
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
|
||||||
import org.jetbrains.kotlin.resolve.calls.tasks.TracingStrategy
|
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.checkers.MissingDependencySupertypeChecker
|
||||||
import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant
|
import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant
|
||||||
import org.jetbrains.kotlin.resolve.constants.IntegerValueTypeConstant
|
import org.jetbrains.kotlin.resolve.constants.IntegerValueTypeConstant
|
||||||
@@ -61,7 +57,8 @@ class CallCompleter(
|
|||||||
private val deprecationResolver: DeprecationResolver,
|
private val deprecationResolver: DeprecationResolver,
|
||||||
private val effectSystem: EffectSystem,
|
private val effectSystem: EffectSystem,
|
||||||
private val dataFlowValueFactory: DataFlowValueFactory,
|
private val dataFlowValueFactory: DataFlowValueFactory,
|
||||||
private val missingSupertypesResolver: MissingSupertypesResolver
|
private val missingSupertypesResolver: MissingSupertypesResolver,
|
||||||
|
private val callComponents: KotlinCallComponents,
|
||||||
) {
|
) {
|
||||||
fun <D : CallableDescriptor> completeCall(
|
fun <D : CallableDescriptor> completeCall(
|
||||||
context: BasicCallResolutionContext,
|
context: BasicCallResolutionContext,
|
||||||
@@ -90,7 +87,8 @@ class CallCompleter(
|
|||||||
if (calleeExpression != null && !calleeExpression.isFakeElement) calleeExpression
|
if (calleeExpression != null && !calleeExpression.isFakeElement) calleeExpression
|
||||||
else resolvedCall.call.callElement
|
else resolvedCall.call.callElement
|
||||||
|
|
||||||
val callCheckerContext = CallCheckerContext(context, deprecationResolver, moduleDescriptor, missingSupertypesResolver)
|
val callCheckerContext =
|
||||||
|
CallCheckerContext(context, deprecationResolver, moduleDescriptor, missingSupertypesResolver, callComponents)
|
||||||
for (callChecker in callCheckers) {
|
for (callChecker in callCheckers) {
|
||||||
callChecker.check(resolvedCall, reportOn, callCheckerContext)
|
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.BindingTrace
|
||||||
import org.jetbrains.kotlin.resolve.MissingSupertypesResolver
|
import org.jetbrains.kotlin.resolve.MissingSupertypesResolver
|
||||||
import org.jetbrains.kotlin.resolve.calls.context.ResolutionContext
|
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.model.ResolvedCall
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
|
||||||
@@ -44,6 +45,7 @@ class CallCheckerContext @JvmOverloads constructor(
|
|||||||
override val deprecationResolver: DeprecationResolver,
|
override val deprecationResolver: DeprecationResolver,
|
||||||
override val moduleDescriptor: ModuleDescriptor,
|
override val moduleDescriptor: ModuleDescriptor,
|
||||||
val missingSupertypesResolver: MissingSupertypesResolver,
|
val missingSupertypesResolver: MissingSupertypesResolver,
|
||||||
|
val callComponents: KotlinCallComponents,
|
||||||
override val trace: BindingTrace = resolutionContext.trace
|
override val trace: BindingTrace = resolutionContext.trace
|
||||||
) : CheckerContext {
|
) : CheckerContext {
|
||||||
val scope: LexicalScope
|
val scope: LexicalScope
|
||||||
|
|||||||
+2
-1
@@ -567,7 +567,8 @@ class BuilderInferenceSession(
|
|||||||
return ResolvedAtomCompleter(
|
return ResolvedAtomCompleter(
|
||||||
resultSubstitutor, context, kotlinToResolvedCallTransformer,
|
resultSubstitutor, context, kotlinToResolvedCallTransformer,
|
||||||
expressionTypingServices, argumentTypeResolver, doubleColonExpressionResolver, builtIns,
|
expressionTypingServices, argumentTypeResolver, doubleColonExpressionResolver, builtIns,
|
||||||
deprecationResolver, moduleDescriptor, context.dataFlowValueFactory, typeApproximator, missingSupertypesResolver
|
deprecationResolver, moduleDescriptor, context.dataFlowValueFactory, typeApproximator, missingSupertypesResolver,
|
||||||
|
callComponents,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-3
@@ -14,9 +14,6 @@ import org.jetbrains.kotlin.resolve.*
|
|||||||
import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver
|
import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver
|
||||||
import org.jetbrains.kotlin.resolve.calls.CallTransformer
|
import org.jetbrains.kotlin.resolve.calls.CallTransformer
|
||||||
import org.jetbrains.kotlin.resolve.calls.DiagnosticReporterByTrackingStrategy
|
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.AdditionalTypeChecker
|
||||||
import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker
|
import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker
|
||||||
import org.jetbrains.kotlin.resolve.calls.checkers.CallCheckerContext
|
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.DataFlowValueFactory
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.SmartCastManager
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.SmartCastManager
|
||||||
import org.jetbrains.kotlin.resolve.calls.tasks.TracingStrategy
|
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.calls.util.makeNullableTypeIfSafeReceiver
|
||||||
import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant
|
import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant
|
||||||
import org.jetbrains.kotlin.resolve.constants.IntegerLiteralTypeConstructor
|
import org.jetbrains.kotlin.resolve.constants.IntegerLiteralTypeConstructor
|
||||||
@@ -62,6 +62,7 @@ class KotlinToResolvedCallTransformer(
|
|||||||
private val typeApproximator: TypeApproximator,
|
private val typeApproximator: TypeApproximator,
|
||||||
private val missingSupertypesResolver: MissingSupertypesResolver,
|
private val missingSupertypesResolver: MissingSupertypesResolver,
|
||||||
private val candidateInterceptor: CandidateInterceptor,
|
private val candidateInterceptor: CandidateInterceptor,
|
||||||
|
private val callComponents: KotlinCallComponents,
|
||||||
) {
|
) {
|
||||||
companion object {
|
companion object {
|
||||||
private val REPORT_MISSING_NEW_INFERENCE_DIAGNOSTIC
|
private val REPORT_MISSING_NEW_INFERENCE_DIAGNOSTIC
|
||||||
@@ -127,6 +128,7 @@ class KotlinToResolvedCallTransformer(
|
|||||||
resultSubstitutor, context, this, expressionTypingServices, argumentTypeResolver,
|
resultSubstitutor, context, this, expressionTypingServices, argumentTypeResolver,
|
||||||
doubleColonExpressionResolver, builtIns, deprecationResolver, moduleDescriptor, dataFlowValueFactory,
|
doubleColonExpressionResolver, builtIns, deprecationResolver, moduleDescriptor, dataFlowValueFactory,
|
||||||
typeApproximator, missingSupertypesResolver,
|
typeApproximator, missingSupertypesResolver,
|
||||||
|
callComponents,
|
||||||
)
|
)
|
||||||
|
|
||||||
if (context.inferenceSession.shouldCompleteResolvedSubAtomsOf(candidate)) {
|
if (context.inferenceSession.shouldCompleteResolvedSubAtomsOf(candidate)) {
|
||||||
|
|||||||
+5
-3
@@ -61,10 +61,11 @@ class ResolvedAtomCompleter(
|
|||||||
private val moduleDescriptor: ModuleDescriptor,
|
private val moduleDescriptor: ModuleDescriptor,
|
||||||
private val dataFlowValueFactory: DataFlowValueFactory,
|
private val dataFlowValueFactory: DataFlowValueFactory,
|
||||||
private val typeApproximator: TypeApproximator,
|
private val typeApproximator: TypeApproximator,
|
||||||
private val missingSupertypesResolver: MissingSupertypesResolver
|
private val missingSupertypesResolver: MissingSupertypesResolver,
|
||||||
|
private val callComponents: KotlinCallComponents,
|
||||||
) {
|
) {
|
||||||
private val topLevelCallCheckerContext = CallCheckerContext(
|
private val topLevelCallCheckerContext = CallCheckerContext(
|
||||||
topLevelCallContext, deprecationResolver, moduleDescriptor, missingSupertypesResolver
|
topLevelCallContext, deprecationResolver, moduleDescriptor, missingSupertypesResolver, callComponents,
|
||||||
)
|
)
|
||||||
private val topLevelTrace = topLevelCallCheckerContext.trace
|
private val topLevelTrace = topLevelCallCheckerContext.trace
|
||||||
|
|
||||||
@@ -186,7 +187,8 @@ class ResolvedAtomCompleter(
|
|||||||
resolutionContextForPartialCall.replaceBindingTrace(topLevelTrace),
|
resolutionContextForPartialCall.replaceBindingTrace(topLevelTrace),
|
||||||
deprecationResolver,
|
deprecationResolver,
|
||||||
moduleDescriptor,
|
moduleDescriptor,
|
||||||
missingSupertypesResolver
|
missingSupertypesResolver,
|
||||||
|
callComponents,
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
topLevelCallCheckerContext
|
topLevelCallCheckerContext
|
||||||
|
|||||||
+3
-1
@@ -978,6 +978,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
components.deprecationResolver,
|
components.deprecationResolver,
|
||||||
components.moduleDescriptor,
|
components.moduleDescriptor,
|
||||||
components.missingSupertypesResolver,
|
components.missingSupertypesResolver,
|
||||||
|
components.callComponents,
|
||||||
trace
|
trace
|
||||||
);
|
);
|
||||||
for (CallChecker checker : components.callCheckers) {
|
for (CallChecker checker : components.callCheckers) {
|
||||||
@@ -1064,7 +1065,8 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
context,
|
context,
|
||||||
components.deprecationResolver,
|
components.deprecationResolver,
|
||||||
components.moduleDescriptor,
|
components.moduleDescriptor,
|
||||||
components.missingSupertypesResolver
|
components.missingSupertypesResolver,
|
||||||
|
components.callComponents
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+8
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver;
|
|||||||
import org.jetbrains.kotlin.resolve.calls.CallResolver;
|
import org.jetbrains.kotlin.resolve.calls.CallResolver;
|
||||||
import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker;
|
import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker;
|
||||||
import org.jetbrains.kotlin.resolve.calls.checkers.RttiExpressionChecker;
|
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.calls.smartcasts.DataFlowValueFactory;
|
||||||
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator;
|
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator;
|
||||||
import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver;
|
import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver;
|
||||||
@@ -69,6 +70,8 @@ public class ExpressionTypingComponents {
|
|||||||
public MissingSupertypesResolver missingSupertypesResolver;
|
public MissingSupertypesResolver missingSupertypesResolver;
|
||||||
public AnnotationChecker annotationChecker;
|
public AnnotationChecker annotationChecker;
|
||||||
|
|
||||||
|
public KotlinCallComponents callComponents;
|
||||||
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setGlobalContext(@NotNull GlobalContext globalContext) {
|
public void setGlobalContext(@NotNull GlobalContext globalContext) {
|
||||||
@@ -264,4 +267,9 @@ public class ExpressionTypingComponents {
|
|||||||
public void setAnnotationChecker(@NotNull AnnotationChecker annotationChecker) {
|
public void setAnnotationChecker(@NotNull AnnotationChecker annotationChecker) {
|
||||||
this.annotationChecker = annotationChecker;
|
this.annotationChecker = annotationChecker;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public void setCallComponents(@NotNull KotlinCallComponents callComponents) {
|
||||||
|
this.callComponents = callComponents;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user