From 1e41ec7d22c710ccf011e0a1609b2a6192bdaa1e Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 17 Nov 2021 11:44:59 +0300 Subject: [PATCH] FIR: replace ConeComposedSubstitutor with ChainedSubstitutor --- .../resolve/inference/FirBuilderInferenceSession.kt | 10 ++-------- .../codegen/box/inference/builderInference/kt48445.kt | 1 - 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt index eb487c7e9d0..44be722629b 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.resolve.calls.Candidate import org.jetbrains.kotlin.fir.resolve.calls.ResolutionContext import org.jetbrains.kotlin.fir.resolve.inference.model.ConeBuilderInferenceSubstitutionConstraintPosition +import org.jetbrains.kotlin.fir.resolve.substitution.ChainedSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer @@ -249,7 +250,7 @@ class FirBuilderInferenceSession( private fun updateCalls(commonSystem: NewConstraintSystemImpl) { val nonFixedToVariablesSubstitutor = createNonFixedTypeToVariableSubstitutor() val commonSystemSubstitutor = commonSystem.buildCurrentSubstitutor() as ConeSubstitutor - val nonFixedTypesToResultSubstitutor = ConeComposedSubstitutor(commonSystemSubstitutor, nonFixedToVariablesSubstitutor) + val nonFixedTypesToResultSubstitutor = ChainedSubstitutor(nonFixedToVariablesSubstitutor, commonSystemSubstitutor) val stubTypeSubstitutor = FirStubTypeTransformer(nonFixedTypesToResultSubstitutor) lambda.transformSingle(stubTypeSubstitutor, null) @@ -263,13 +264,6 @@ class FirBuilderInferenceSession( } } -class ConeComposedSubstitutor(val left: ConeSubstitutor, val right: ConeSubstitutor) : ConeSubstitutor() { - override fun substituteOrNull(type: ConeKotlinType): ConeKotlinType? { - val rightSubstitution = right.substituteOrNull(type) - return left.substituteOrNull(rightSubstitution ?: type) - } -} - class FirStubTypeTransformer( private val substitutor: ConeSubstitutor ) : FirDefaultTransformer() { diff --git a/compiler/testData/codegen/box/inference/builderInference/kt48445.kt b/compiler/testData/codegen/box/inference/builderInference/kt48445.kt index 6f2de7e3bc2..fd6d8078746 100644 --- a/compiler/testData/codegen/box/inference/builderInference/kt48445.kt +++ b/compiler/testData/codegen/box/inference/builderInference/kt48445.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +UnrestrictedBuilderInference -// IGNORE_BACKEND_FIR: JVM_IR // FIR status: NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER on lazy call (Name3, T) // WITH_STDLIB