From c71ae4301cda3cf19cbe1740ad892992c80872ac Mon Sep 17 00:00:00 2001 From: Victor Petukhov Date: Tue, 5 Apr 2022 20:29:31 +0300 Subject: [PATCH] [FE 1.0] Get rid of absolute `CompatibilityOfTypeVariableAsIntersectionTypePart` --- .../calls/components/ResolutionParts.kt | 19 ------------------- .../resolve/calls/model/KotlinCallKind.kt | 3 --- ...eWhenVariableHasComplexIntersectionType.kt | 2 +- 3 files changed, 1 insertion(+), 23 deletions(-) diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ResolutionParts.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ResolutionParts.kt index 26e61061d49..73486b0451d 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ResolutionParts.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ResolutionParts.kt @@ -304,25 +304,6 @@ internal object PostponedVariablesInitializerResolutionPart : ResolutionPart() { } } -internal object CompatibilityOfTypeVariableAsIntersectionTypePart : ResolutionPart() { - override fun ResolutionCandidate.process(workIndex: Int) { - val csBuilder = getSystem().getBuilder() - for ((_, variableWithConstraints) in csBuilder.currentStorage().notFixedTypeVariables) { - val constraints = variableWithConstraints.constraints.filter { csBuilder.isProperType(it.type) } - - if (constraints.size <= 1) continue - if (constraints.any { it.kind.isLower() || it.kind.isEqual() }) continue - - // See TypeBoundsImpl.computeValues(). It returns several values for such situation which means an error in OI - if (callComponents.statelessCallbacks.isOldIntersectionIsEmpty(constraints.map { it.type }.cast())) { - markCandidateForCompatibilityResolve() - return - } - } - - } -} - internal object CompatibilityOfPartiallyApplicableSamConversion : ResolutionPart() { override fun ResolutionCandidate.process(workIndex: Int) { if (resolvedCall.argumentsWithConversion.isEmpty()) return diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinCallKind.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinCallKind.kt index 14d121fa35a..566773e623f 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinCallKind.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinCallKind.kt @@ -19,7 +19,6 @@ import org.jetbrains.kotlin.resolve.calls.components.CheckSuperExpressionCallPar import org.jetbrains.kotlin.resolve.calls.components.CheckVisibility import org.jetbrains.kotlin.resolve.calls.components.CollectionTypeVariableUsagesInfo import org.jetbrains.kotlin.resolve.calls.components.CompatibilityOfPartiallyApplicableSamConversion -import org.jetbrains.kotlin.resolve.calls.components.CompatibilityOfTypeVariableAsIntersectionTypePart import org.jetbrains.kotlin.resolve.calls.components.CreateFreshVariablesSubstitutor import org.jetbrains.kotlin.resolve.calls.components.EagerResolveOfCallableReferences import org.jetbrains.kotlin.resolve.calls.components.MapArguments @@ -57,7 +56,6 @@ enum class KotlinCallKind(vararg resolutionPart: ResolutionPart) { CheckArgumentsInParenthesis, CheckExternalArgument, EagerResolveOfCallableReferences, - CompatibilityOfTypeVariableAsIntersectionTypePart, CompatibilityOfPartiallyApplicableSamConversion, PostponedVariablesInitializerResolutionPart, CheckContextReceiversResolutionPart, @@ -72,7 +70,6 @@ enum class KotlinCallKind(vararg resolutionPart: ResolutionPart) { CollectionTypeVariableUsagesInfo, CheckReceivers, CheckCallableReference, - CompatibilityOfTypeVariableAsIntersectionTypePart, CheckIncompatibleTypeVariableUpperBounds ), UNSUPPORTED(); diff --git a/compiler/testData/diagnostics/tests/inference/compatibilityResolveWhenVariableHasComplexIntersectionType.kt b/compiler/testData/diagnostics/tests/inference/compatibilityResolveWhenVariableHasComplexIntersectionType.kt index 2b5160ada7c..7eb5065d60d 100644 --- a/compiler/testData/diagnostics/tests/inference/compatibilityResolveWhenVariableHasComplexIntersectionType.kt +++ b/compiler/testData/diagnostics/tests/inference/compatibilityResolveWhenVariableHasComplexIntersectionType.kt @@ -11,7 +11,7 @@ object Scope { fun , S : T> greater(x: Bar, t: T) {} fun test(b: Bar) { - greater(b, b) + greater(b, b) } } }