Refactor. Remove ConstraintPosition data duplication

This commit is contained in:
Simon Ogorodnik
2021-10-28 13:12:42 +03:00
committed by teamcity
parent 4d9e919f7e
commit 91b629d16a
2 changed files with 4 additions and 3 deletions
@@ -43,7 +43,7 @@ class ConstraintInjector(
fun addInitialSubtypeConstraint(c: Context, lowerType: KotlinTypeMarker, upperType: KotlinTypeMarker, position: ConstraintPosition) {
val initialConstraint = InitialConstraint(lowerType, upperType, UPPER, position).also { c.addInitialConstraint(it) }
val typeCheckerState = TypeCheckerStateForConstraintInjector(c, IncorporationConstraintPosition(position, initialConstraint))
val typeCheckerState = TypeCheckerStateForConstraintInjector(c, IncorporationConstraintPosition(initialConstraint))
updateAllowedTypeDepth(c, lowerType)
updateAllowedTypeDepth(c, upperType)
@@ -69,7 +69,7 @@ class ConstraintInjector(
else -> return
}
val initialConstraint = InitialConstraint(typeVariable, equalType, EQUALITY, position).also { c.addInitialConstraint(it) }
val typeCheckerState = TypeCheckerStateForConstraintInjector(c, IncorporationConstraintPosition(position, initialConstraint))
val typeCheckerState = TypeCheckerStateForConstraintInjector(c, IncorporationConstraintPosition(initialConstraint))
// We add constraints like `T? == Foo!` in the old way
if (!typeVariable.isSimpleType() || typeVariable.isMarkedNullable()) {
@@ -77,10 +77,11 @@ open class DelegatedPropertyConstraintPosition<T>(val topLevelCall: T) : Constra
}
data class IncorporationConstraintPosition(
val from: ConstraintPosition,
val initialConstraint: InitialConstraint,
var isFromDeclaredUpperBound: Boolean = false
) : ConstraintPosition() {
val from: ConstraintPosition get() = initialConstraint.position
override fun toString(): String = "Incorporate $initialConstraint from position $from"
}