Drop isEqualTypeConstructor in favour of areEqualTypeConstructors
This commit is contained in:
@@ -38,7 +38,7 @@ class JavaOverrideChecker internal constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return with(context) {
|
return with(context) {
|
||||||
isEqualTypeConstructors(
|
areEqualTypeConstructors(
|
||||||
substitutor.substituteOrSelf(candidateType).typeConstructor(),
|
substitutor.substituteOrSelf(candidateType).typeConstructor(),
|
||||||
substitutor.substituteOrSelf(baseType).typeConstructor()
|
substitutor.substituteOrSelf(baseType).typeConstructor()
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -275,7 +275,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty
|
|||||||
return this
|
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
|
if (c1 is ErrorTypeConstructor || c2 is ErrorTypeConstructor) return false
|
||||||
|
|
||||||
//assert(c1 is ConeSymbol)
|
//assert(c1 is ConeSymbol)
|
||||||
|
|||||||
@@ -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 isErrorTypeEqualsToAnything get() = false
|
||||||
override val isStubTypeEqualsToAnything get() = false
|
override val isStubTypeEqualsToAnything get() = false
|
||||||
|
|
||||||
|
|||||||
@@ -24,14 +24,8 @@ open class IrTypeCheckerContextWithAdditionalAxioms(
|
|||||||
private val secondTypeParameterConstructors = secondParameters.map { it.symbol }
|
private val secondTypeParameterConstructors = secondParameters.map { it.symbol }
|
||||||
private val matchingTypeConstructors = firstTypeParameterConstructors.zip(secondTypeParameterConstructors).toMap()
|
private val matchingTypeConstructors = firstTypeParameterConstructors.zip(secondTypeParameterConstructors).toMap()
|
||||||
|
|
||||||
override fun areEqualTypeConstructors(a: TypeConstructorMarker, b: TypeConstructorMarker): Boolean {
|
override fun areEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker): Boolean {
|
||||||
if (super.isEqualTypeConstructors(a, b)) return true
|
if (super.areEqualTypeConstructors(c1, c2)) 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
|
|
||||||
if (matchingTypeConstructors[c1] == c2 || matchingTypeConstructors[c2] == c1) return true
|
if (matchingTypeConstructors[c1] == c2 || matchingTypeConstructors[c2] == c1) return true
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ interface IrTypeSystemContext : TypeSystemContext, TypeSystemCommonSuperTypesCon
|
|||||||
|
|
||||||
override fun TypeParameterMarker.getTypeConstructor() = this as IrTypeParameterSymbol
|
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
|
c1 as IrClassifierSymbol, c2 as IrClassifierSymbol
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@ object AbstractStrictEqualityTypeChecker {
|
|||||||
if (a.argumentsCount() != b.argumentsCount()
|
if (a.argumentsCount() != b.argumentsCount()
|
||||||
|| a.isMarkedNullable() != b.isMarkedNullable()
|
|| a.isMarkedNullable() != b.isMarkedNullable()
|
||||||
|| (a.asDefinitelyNotNullType() == null) != (b.asDefinitelyNotNullType() == null)
|
|| (a.asDefinitelyNotNullType() == null) != (b.asDefinitelyNotNullType() == null)
|
||||||
|| !isEqualTypeConstructors(a.typeConstructor(), b.typeConstructor())
|
|| !areEqualTypeConstructors(a.typeConstructor(), b.typeConstructor())
|
||||||
) {
|
) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,8 +18,6 @@ abstract class AbstractTypeCheckerContext : TypeSystemContext {
|
|||||||
|
|
||||||
abstract fun substitutionSupertypePolicy(type: SimpleTypeMarker): SupertypesPolicy
|
abstract fun substitutionSupertypePolicy(type: SimpleTypeMarker): SupertypesPolicy
|
||||||
|
|
||||||
abstract fun areEqualTypeConstructors(a: TypeConstructorMarker, b: TypeConstructorMarker): Boolean
|
|
||||||
|
|
||||||
override fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker {
|
override fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker {
|
||||||
return type
|
return type
|
||||||
}
|
}
|
||||||
@@ -309,7 +307,7 @@ object AbstractTypeChecker {
|
|||||||
|
|
||||||
val superConstructor = superType.typeConstructor()
|
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
|
if (superType.typeConstructor().isAnyConstructor()) return true
|
||||||
|
|
||||||
val supertypesWithSameConstructor = findCorrespondingSupertypes(subType, superConstructor)
|
val supertypesWithSameConstructor = findCorrespondingSupertypes(subType, superConstructor)
|
||||||
@@ -611,7 +609,7 @@ object AbstractNullabilityChecker {
|
|||||||
|
|
||||||
if (isStubTypeEqualsToAnything && type.isStubType()) return true
|
if (isStubTypeEqualsToAnything && type.isStubType()) return true
|
||||||
|
|
||||||
return isEqualTypeConstructors(type.typeConstructor(), end)
|
return areEqualTypeConstructors(type.typeConstructor(), end)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ interface TypeSystemContext : TypeSystemOptimizationContext {
|
|||||||
fun TypeParameterMarker.getUpperBound(index: Int): KotlinTypeMarker
|
fun TypeParameterMarker.getUpperBound(index: Int): KotlinTypeMarker
|
||||||
fun TypeParameterMarker.getTypeConstructor(): TypeConstructorMarker
|
fun TypeParameterMarker.getTypeConstructor(): TypeConstructorMarker
|
||||||
|
|
||||||
fun isEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker): Boolean
|
fun areEqualTypeConstructors(c1: TypeConstructorMarker, c2: TypeConstructorMarker): Boolean
|
||||||
|
|
||||||
fun TypeConstructorMarker.isDenotable(): Boolean
|
fun TypeConstructorMarker.isDenotable(): Boolean
|
||||||
|
|
||||||
|
|||||||
@@ -995,13 +995,6 @@ public class OverridingUtil {
|
|||||||
return super.areEqualTypeConstructors(a, b) || areEqualTypeConstructorsByAxioms(a, b);
|
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) {
|
private boolean areEqualTypeConstructorsByAxioms(@NotNull TypeConstructor a, @NotNull TypeConstructor b) {
|
||||||
if (equalityAxioms.equals(a, b)) return true;
|
if (equalityAxioms.equals(a, b)) return true;
|
||||||
if (matchingTypeConstructors == null) return false;
|
if (matchingTypeConstructors == null) return false;
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ interface ClassicTypeSystemContext : TypeSystemInferenceExtensionContext, TypeSy
|
|||||||
return this.typeConstructor
|
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(c1 is TypeConstructor, c1::errorMessage)
|
||||||
require(c2 is TypeConstructor, c2::errorMessage)
|
require(c2 is TypeConstructor, c2::errorMessage)
|
||||||
return c1 == c2
|
return c1 == c2
|
||||||
|
|||||||
Reference in New Issue
Block a user