From 0ad3872d1b425beeef55befc818da6b334a4f9c4 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 29 Jan 2018 13:31:16 +0100 Subject: [PATCH] Remove unneeded constructor parameters in CallCheckerContext --- .../kotlin/resolve/calls/CallCompleter.kt | 7 ++----- .../kotlin/resolve/calls/checkers/CallChecker.kt | 14 +++++--------- .../calls/tower/KotlinToResolvedCallTransformer.kt | 11 ++--------- .../resolve/calls/tower/ResolvedAtomCompleter.kt | 5 +---- .../expressions/BasicExpressionTypingVisitor.java | 5 ++--- 5 files changed, 12 insertions(+), 30 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 b3fac11808a..8bec1ef1db5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallCompleter.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallCompleter.kt @@ -20,9 +20,8 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.getReturnTypeFromFunctionType import org.jetbrains.kotlin.builtins.getValueParameterTypesFromFunctionType import org.jetbrains.kotlin.builtins.isFunctionType -import org.jetbrains.kotlin.config.LanguageVersionSettings -import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.contracts.EffectSystem +import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.BindingContext.CONSTRAINT_SYSTEM_COMPLETER @@ -48,7 +47,6 @@ 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.tasks.TracingStrategy -import org.jetbrains.kotlin.resolve.scopes.receivers.TransientReceiver import org.jetbrains.kotlin.types.ErrorUtils import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.TypeUtils @@ -62,7 +60,6 @@ class CallCompleter( private val dataFlowAnalyzer: DataFlowAnalyzer, private val callCheckers: Iterable, private val builtIns: KotlinBuiltIns, - private val languageVersionSettings: LanguageVersionSettings, private val deprecationResolver: DeprecationResolver, private val effectSystem: EffectSystem ) { @@ -90,7 +87,7 @@ class CallCompleter( if (calleeExpression != null && !calleeExpression.isFakeElement) calleeExpression else resolvedCall.call.callElement - val callCheckerContext = CallCheckerContext(context, languageVersionSettings, deprecationResolver) + val callCheckerContext = CallCheckerContext(context, deprecationResolver) 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 070cf80e1c2..14686659cc1 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 @@ -36,11 +36,10 @@ interface CallChecker { fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) } -class CallCheckerContext( +class CallCheckerContext @JvmOverloads constructor( val resolutionContext: ResolutionContext<*>, - override val trace: BindingTrace, - override val languageVersionSettings: LanguageVersionSettings, - override val deprecationResolver: DeprecationResolver + override val deprecationResolver: DeprecationResolver, + override val trace: BindingTrace = resolutionContext.trace ) : CheckerContext { val scope: LexicalScope get() = resolutionContext.scope @@ -51,11 +50,8 @@ class CallCheckerContext( val isAnnotationContext: Boolean get() = resolutionContext.isAnnotationContext - constructor( - c: ResolutionContext<*>, - languageVersionSettings: LanguageVersionSettings, - deprecationResolver: DeprecationResolver - ) : this(c, c.trace, languageVersionSettings, deprecationResolver) + override val languageVersionSettings: LanguageVersionSettings + get() = resolutionContext.languageVersionSettings } // Use this utility to avoid premature computation of deferred return type of a resolved callable descriptor. 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 7156bda5fa9..289213b2435 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 @@ -16,8 +16,6 @@ package org.jetbrains.kotlin.resolve.calls.tower -import org.jetbrains.kotlin.config.LanguageVersionSettings -import org.jetbrains.kotlin.contracts.EffectSystem import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Errors @@ -59,20 +57,16 @@ import org.jetbrains.kotlin.utils.addToStdlib.cast import org.jetbrains.kotlin.utils.addToStdlib.safeAs import java.util.* - class KotlinToResolvedCallTransformer( private val callCheckers: Iterable, - private val languageFeatureSettings: LanguageVersionSettings, private val dataFlowAnalyzer: DataFlowAnalyzer, private val argumentTypeResolver: ArgumentTypeResolver, private val constantExpressionEvaluator: ConstantExpressionEvaluator, private val deprecationResolver: DeprecationResolver, private val expressionTypingServices: ExpressionTypingServices, private val doubleColonExpressionResolver: DoubleColonExpressionResolver, - private val additionalDiagnosticReporter: AdditionalDiagnosticReporter, - private val effectSystem: EffectSystem + private val additionalDiagnosticReporter: AdditionalDiagnosticReporter ) { - companion object { private val REPORT_MISSING_NEW_INFERENCE_DIAGNOSTIC get() = false @@ -104,8 +98,7 @@ class KotlinToResolvedCallTransformer( val resultSubstitutor = baseResolvedCall.constraintSystem.buildResultingSubstitutor() val ktPrimitiveCompleter = ResolvedAtomCompleter( resultSubstitutor, context.trace, context, this, - expressionTypingServices, argumentTypeResolver, doubleColonExpressionResolver, - languageFeatureSettings, deprecationResolver + expressionTypingServices, argumentTypeResolver, doubleColonExpressionResolver, deprecationResolver ) for (subKtPrimitive in candidate.subResolvedAtoms) { 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 d7cd2017e45..cf0061590a6 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 @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.resolve.calls.tower import org.jetbrains.kotlin.builtins.replaceReturnType -import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor @@ -50,15 +49,13 @@ class ResolvedAtomCompleter( private val resultSubstitutor: NewTypeSubstitutor, private val trace: BindingTrace, private val topLevelCallContext: BasicCallResolutionContext, - private val kotlinToResolvedCallTransformer: KotlinToResolvedCallTransformer, private val expressionTypingServices: ExpressionTypingServices, private val argumentTypeResolver: ArgumentTypeResolver, private val doubleColonExpressionResolver: DoubleColonExpressionResolver, - languageVersionSettings: LanguageVersionSettings, deprecationResolver: DeprecationResolver ) { - private val callCheckerContext = CallCheckerContext(topLevelCallContext, languageVersionSettings, deprecationResolver) + private val callCheckerContext = CallCheckerContext(topLevelCallContext, deprecationResolver) private fun complete(resolvedAtom: ResolvedAtom) { when (resolvedAtom) { 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 f26cd4b943c..efe2687f79a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java @@ -938,8 +938,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { if (resolvedCall != null && trace.wantsDiagnostics()) { // Call must be validated with the actual, not temporary trace in order to report operator diagnostic // Only unary assignment expressions (++, --) and +=/... must be checked, normal assignments have the proper trace - CallCheckerContext callCheckerContext = - new CallCheckerContext(context, trace, components.languageVersionSettings, components.deprecationResolver); + CallCheckerContext callCheckerContext = new CallCheckerContext(context, components.deprecationResolver, trace); for (CallChecker checker : components.callCheckers) { checker.check(resolvedCall, expression, callCheckerContext); } @@ -1016,7 +1015,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { @NotNull private CallCheckerContext createCallCheckerContext(@NotNull ExpressionTypingContext context) { - return new CallCheckerContext(context, components.languageVersionSettings, components.deprecationResolver); + return new CallCheckerContext(context, components.deprecationResolver); } @Override