From 1d258635a2480b1f66c589d73d8849f448e8ee41 Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Fri, 24 Dec 2021 09:26:14 +0300 Subject: [PATCH] NI: Get rid of confusing asConstraintSystemCompletionContext NB: there is a different asConstraintSystemCompleterContext that might have side effects --- .../resolve/inference/ConstraintSystemCompleter.kt | 12 ++++++------ .../components/ConstraintSystemCompletionContext.kt | 2 -- .../calls/inference/model/NewConstraintSystemImpl.kt | 2 -- .../components/KotlinConstraintSystemCompleter.kt | 6 +++--- 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/ConstraintSystemCompleter.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/ConstraintSystemCompleter.kt index 2b32d680f19..dfad6cfe47b 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/ConstraintSystemCompleter.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/ConstraintSystemCompleter.kt @@ -74,7 +74,7 @@ class ConstraintSystemCompleter(private val components: BodyResolveComponents, p // Stage 2 val newExpectedTypeWasBuilt = postponedArgumentsInputTypesResolver.collectParameterTypesAndBuildNewExpectedTypes( - asConstraintSystemCompletionContext(), + this, postponedArgumentsWithRevisableType, completionMode, dependencyProvider, @@ -88,7 +88,7 @@ class ConstraintSystemCompleter(private val components: BodyResolveComponents, p // Stage 3 for (argument in postponedArguments) { val variableWasFixed = postponedArgumentsInputTypesResolver.fixNextReadyVariableForParameterTypeIfNeeded( - asConstraintSystemCompletionContext(), + this, argument, postponedArguments, candidateReturnType, @@ -104,7 +104,7 @@ class ConstraintSystemCompleter(private val components: BodyResolveComponents, p // Stage 4 for (argument in postponedArgumentsWithRevisableType) { val argumentWasTransformed = - transformToAtomWithNewFunctionalExpectedType(asConstraintSystemCompletionContext(), context, argument) + transformToAtomWithNewFunctionalExpectedType(this, context, argument) if (argumentWasTransformed) continue@completion @@ -215,7 +215,7 @@ class ConstraintSystemCompleter(private val components: BodyResolveComponents, p while (true) { val variableForFixation = variableFixationFinder.findFirstVariableForFixation( this, - getOrderedAllTypeVariables(asConstraintSystemCompletionContext(), topLevelAtoms, collectVariablesFromContext), + getOrderedAllTypeVariables(this, topLevelAtoms, collectVariablesFromContext), postponedArguments, completionMode, topLevelType @@ -228,13 +228,13 @@ class ConstraintSystemCompleter(private val components: BodyResolveComponents, p when { variableForFixation.hasProperConstraint -> { - fixVariable(asConstraintSystemCompletionContext(), topLevelType, variableWithConstraints, postponedArguments) + fixVariable(this, topLevelType, variableWithConstraints, postponedArguments) return true } context.inferenceSession.isSyntheticTypeVariable(variableWithConstraints.typeVariable) -> { context.inferenceSession.fixSyntheticTypeVariableWithNotEnoughInformation( variableWithConstraints.typeVariable as ConeTypeVariable, - asConstraintSystemCompletionContext() + this ) return true } diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/components/ConstraintSystemCompletionContext.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/components/ConstraintSystemCompletionContext.kt index 32073b002a5..aa5da9abc4f 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/components/ConstraintSystemCompletionContext.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/components/ConstraintSystemCompletionContext.kt @@ -32,7 +32,5 @@ interface ConstraintSystemCompletionContext : VariableFixationFinder.Context, Re fun fixVariable(variable: TypeVariableMarker, resultType: KotlinTypeMarker, position: FixVariableConstraintPosition<*>) - fun asConstraintSystemCompletionContext(): ConstraintSystemCompletionContext - fun couldBeResolvedWithUnrestrictedBuilderInference(): Boolean } diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt index 5a31f48f7a9..f26c5715f8c 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt @@ -104,8 +104,6 @@ class NewConstraintSystemImpl( override fun asPostponedArgumentsAnalyzerContext() = apply { checkState(State.BUILDING) } - override fun asConstraintSystemCompletionContext(): ConstraintSystemCompletionContext = apply { checkState(State.BUILDING) } - // ConstraintSystemOperation override fun registerVariable(variable: TypeVariableMarker) { checkState(State.BUILDING, State.COMPLETION, State.TRANSACTION) diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/KotlinConstraintSystemCompleter.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/KotlinConstraintSystemCompleter.kt index f6e4abce67e..55920b3c4a2 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/KotlinConstraintSystemCompleter.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/KotlinConstraintSystemCompleter.kt @@ -96,7 +96,7 @@ class KotlinConstraintSystemCompleter( // Stage 2: collect parameter types for postponed arguments val wasBuiltNewExpectedTypeForSomeArgument = postponedArgumentInputTypesResolver.collectParameterTypesAndBuildNewExpectedTypes( - asConstraintSystemCompletionContext(), + this, postponedArgumentsWithRevisableType, completionMode, dependencyProvider, @@ -110,7 +110,7 @@ class KotlinConstraintSystemCompleter( // Stage 3: fix variables for parameter types of all postponed arguments for (argument in postponedArguments) { val wasFixedSomeVariable = postponedArgumentInputTypesResolver.fixNextReadyVariableForParameterTypeIfNeeded( - asConstraintSystemCompletionContext(), + this, argument, postponedArguments, topLevelType, @@ -126,7 +126,7 @@ class KotlinConstraintSystemCompleter( // Stage 4: create atoms with revised expected types if needed for (argument in postponedArgumentsWithRevisableType) { val wasTransformedSomeArgument = transformToAtomWithNewFunctionalExpectedType( - asConstraintSystemCompletionContext(), argument, diagnosticsHolder + this, argument, diagnosticsHolder ) if (wasTransformedSomeArgument)