From f02593074f74b98bb6c76e6387679783c943187a Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Fri, 2 Oct 2020 17:44:35 +0300 Subject: [PATCH] Drop isEqualTypeConstructor in favour of areEqualTypeConstructors --- .../kotlin/fir/java/scopes/JavaOverrideChecker.kt | 2 +- .../org/jetbrains/kotlin/fir/types/ConeTypeContext.kt | 2 +- .../jetbrains/kotlin/ir/types/IrTypeCheckerContext.kt | 2 -- .../jetbrains/kotlin/ir/types/IrTypeCheckerUtils.kt | 10 ++-------- .../jetbrains/kotlin/ir/types/IrTypeSystemContext.kt | 2 +- .../kotlin/types/AbstractStrictEqualityTypeChecker.kt | 2 +- .../org/jetbrains/kotlin/types/AbstractTypeChecker.kt | 6 ++---- .../jetbrains/kotlin/types/model/TypeSystemContext.kt | 2 +- .../org/jetbrains/kotlin/resolve/OverridingUtil.java | 7 ------- .../kotlin/types/checker/ClassicTypeSystemContext.kt | 2 +- 10 files changed, 10 insertions(+), 27 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaOverrideChecker.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaOverrideChecker.kt index e7940ac14ef..e501d725acf 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaOverrideChecker.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaOverrideChecker.kt @@ -38,7 +38,7 @@ class JavaOverrideChecker internal constructor( } } return with(context) { - isEqualTypeConstructors( + areEqualTypeConstructors( substitutor.substituteOrSelf(candidateType).typeConstructor(), substitutor.substituteOrSelf(baseType).typeConstructor() ) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt index ab18e1f88f3..179bebe402f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt @@ -275,7 +275,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty return this } - override fun isEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker): Boolean { + override fun areEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker): Boolean { if (c1 is ErrorTypeConstructor || c2 is ErrorTypeConstructor) return false //assert(c1 is ConeSymbol) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeCheckerContext.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeCheckerContext.kt index e384425d9ee..f18f9e93ecf 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeCheckerContext.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeCheckerContext.kt @@ -27,8 +27,6 @@ open class IrTypeCheckerContext(override val irBuiltIns: IrBuiltIns) : IrTypeSys } } - override fun areEqualTypeConstructors(a: TypeConstructorMarker, b: TypeConstructorMarker) = super.isEqualTypeConstructors(a, b) - override val isErrorTypeEqualsToAnything get() = false override val isStubTypeEqualsToAnything get() = false diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeCheckerUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeCheckerUtils.kt index 3c1c280b509..0b442c89a58 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeCheckerUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeCheckerUtils.kt @@ -24,14 +24,8 @@ open class IrTypeCheckerContextWithAdditionalAxioms( private val secondTypeParameterConstructors = secondParameters.map { it.symbol } private val matchingTypeConstructors = firstTypeParameterConstructors.zip(secondTypeParameterConstructors).toMap() - override fun areEqualTypeConstructors(a: TypeConstructorMarker, b: TypeConstructorMarker): Boolean { - if (super.isEqualTypeConstructors(a, b)) return true - if (matchingTypeConstructors[a] == b || matchingTypeConstructors[b] == a) return true - return false - } - - override fun isEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker): Boolean { - if (super.isEqualTypeConstructors(c1, c2)) return true + override fun areEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker): Boolean { + if (super.areEqualTypeConstructors(c1, c2)) return true if (matchingTypeConstructors[c1] == c2 || matchingTypeConstructors[c2] == c1) return true return false } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeSystemContext.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeSystemContext.kt index 9613938748d..37851add71b 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeSystemContext.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeSystemContext.kt @@ -139,7 +139,7 @@ interface IrTypeSystemContext : TypeSystemContext, TypeSystemCommonSuperTypesCon override fun TypeParameterMarker.getTypeConstructor() = this as IrTypeParameterSymbol - override fun isEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker) = FqNameEqualityChecker.areEqual( + override fun areEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker) = FqNameEqualityChecker.areEqual( c1 as IrClassifierSymbol, c2 as IrClassifierSymbol ) diff --git a/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractStrictEqualityTypeChecker.kt b/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractStrictEqualityTypeChecker.kt index 59b8f01293b..cf36c051fee 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractStrictEqualityTypeChecker.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractStrictEqualityTypeChecker.kt @@ -41,7 +41,7 @@ object AbstractStrictEqualityTypeChecker { if (a.argumentsCount() != b.argumentsCount() || a.isMarkedNullable() != b.isMarkedNullable() || (a.asDefinitelyNotNullType() == null) != (b.asDefinitelyNotNullType() == null) - || !isEqualTypeConstructors(a.typeConstructor(), b.typeConstructor()) + || !areEqualTypeConstructors(a.typeConstructor(), b.typeConstructor()) ) { return false } diff --git a/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeChecker.kt b/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeChecker.kt index 8d1005fb208..992c4c0a8a5 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeChecker.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeChecker.kt @@ -18,8 +18,6 @@ abstract class AbstractTypeCheckerContext : TypeSystemContext { abstract fun substitutionSupertypePolicy(type: SimpleTypeMarker): SupertypesPolicy - abstract fun areEqualTypeConstructors(a: TypeConstructorMarker, b: TypeConstructorMarker): Boolean - override fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker { return type } @@ -309,7 +307,7 @@ object AbstractTypeChecker { val superConstructor = superType.typeConstructor() - if (isEqualTypeConstructors(subType.typeConstructor(), superConstructor) && superConstructor.parametersCount() == 0) return true + if (areEqualTypeConstructors(subType.typeConstructor(), superConstructor) && superConstructor.parametersCount() == 0) return true if (superType.typeConstructor().isAnyConstructor()) return true val supertypesWithSameConstructor = findCorrespondingSupertypes(subType, superConstructor) @@ -611,7 +609,7 @@ object AbstractNullabilityChecker { if (isStubTypeEqualsToAnything && type.isStubType()) return true - return isEqualTypeConstructors(type.typeConstructor(), end) + return areEqualTypeConstructors(type.typeConstructor(), end) } } diff --git a/core/compiler.common/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt b/core/compiler.common/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt index e540c73b2a1..c0a16c9aa59 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt @@ -260,7 +260,7 @@ interface TypeSystemContext : TypeSystemOptimizationContext { fun TypeParameterMarker.getUpperBound(index: Int): KotlinTypeMarker fun TypeParameterMarker.getTypeConstructor(): TypeConstructorMarker - fun isEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker): Boolean + fun areEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker): Boolean fun TypeConstructorMarker.isDenotable(): Boolean diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/OverridingUtil.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/OverridingUtil.java index b00d4a0c035..b8323730d34 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/OverridingUtil.java +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/OverridingUtil.java @@ -995,13 +995,6 @@ public class OverridingUtil { return super.areEqualTypeConstructors(a, b) || areEqualTypeConstructorsByAxioms(a, b); } - @Override - public boolean isEqualTypeConstructors( - @NotNull TypeConstructorMarker c1, @NotNull TypeConstructorMarker c2 - ) { - return areEqualTypeConstructors(c1, c2); - } - private boolean areEqualTypeConstructorsByAxioms(@NotNull TypeConstructor a, @NotNull TypeConstructor b) { if (equalityAxioms.equals(a, b)) return true; if (matchingTypeConstructors == null) return false; diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt b/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt index 9d28e13f932..07b503ea7aa 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt @@ -212,7 +212,7 @@ interface ClassicTypeSystemContext : TypeSystemInferenceExtensionContext, TypeSy return this.typeConstructor } - override fun isEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker): Boolean { + override fun areEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker): Boolean { require(c1 is TypeConstructor, c1::errorMessage) require(c2 is TypeConstructor, c2::errorMessage) return c1 == c2