Remove constraints containing stub types after completion of the common system of a builder inference call

^KT-49285 Fixed
This commit is contained in:
Victor Petukhov
2021-10-19 14:07:54 +03:00
parent 012f1f6013
commit 64c682f465
14 changed files with 89 additions and 0 deletions
@@ -19,6 +19,8 @@ interface PostponedArgumentsAnalyzerContext : TypeSystemInferenceExtensionContex
fun hasUpperOrEqualUnitConstraint(type: KotlinTypeMarker): Boolean
fun removePostponedTypeVariablesFromConstraints(postponedTypeVariables: Set<TypeConstructorMarker>)
// mutable operations
fun addOtherSystem(otherSystem: ConstraintStorage)
@@ -531,4 +531,12 @@ class NewConstraintSystemImpl(
it.type.lowerBoundIfFlexible().isUnit()
}
}
override fun removePostponedTypeVariablesFromConstraints(postponedTypeVariables: Set<TypeConstructorMarker>) {
for ((_, variableWithConstraints) in storage.notFixedTypeVariables) {
variableWithConstraints.removeConstrains { constraint ->
constraint.type.contains { it is StubTypeMarker && it.getOriginalTypeVariable() in postponedTypeVariables }
}
}
}
}