FIR: code cleanup in integrateConstraintToSystem
This commit is contained in:
committed by
teamcity
parent
6614e1f3af
commit
dafc6d849c
+7
-9
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.resolve.calls.ResolutionContext
|
|||||||
import org.jetbrains.kotlin.fir.resolve.calls.candidate
|
import org.jetbrains.kotlin.fir.resolve.calls.candidate
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.model.ConeBuilderInferenceSubstitutionConstraintPosition
|
import org.jetbrains.kotlin.fir.resolve.inference.model.ConeBuilderInferenceSubstitutionConstraintPosition
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintSystemCompletionContext
|
import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintSystemCompletionContext
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintKind
|
import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintKind
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.model.InitialConstraint
|
import org.jetbrains.kotlin.resolve.calls.inference.model.InitialConstraint
|
||||||
@@ -62,23 +61,22 @@ abstract class AbstractManyCandidatesInferenceSession(
|
|||||||
callSubstitutor: ConeSubstitutor,
|
callSubstitutor: ConeSubstitutor,
|
||||||
nonFixedToVariablesSubstitutor: ConeSubstitutor,
|
nonFixedToVariablesSubstitutor: ConeSubstitutor,
|
||||||
): Boolean {
|
): Boolean {
|
||||||
val substitutedConstraint = initialConstraint.substitute(callSubstitutor)
|
val substitutedConstraintWith = initialConstraint.substitute(callSubstitutor).substitute(nonFixedToVariablesSubstitutor)
|
||||||
val lower =
|
val lower = substitutedConstraintWith.a // TODO: SUB
|
||||||
nonFixedToVariablesSubstitutor.substituteOrSelf(substitutedConstraint.a as ConeKotlinType) // TODO: SUB
|
val upper = substitutedConstraintWith.b // TODO: SUB
|
||||||
val upper =
|
|
||||||
nonFixedToVariablesSubstitutor.substituteOrSelf(substitutedConstraint.b as ConeKotlinType) // TODO: SUB
|
|
||||||
|
|
||||||
if (commonSystem.isProperType(lower) && (lower == upper || commonSystem.isProperType(upper))) return false
|
if (commonSystem.isProperType(lower) && (lower == upper || commonSystem.isProperType(upper))) return false
|
||||||
|
|
||||||
|
val position = substitutedConstraintWith.position
|
||||||
when (initialConstraint.constraintKind) {
|
when (initialConstraint.constraintKind) {
|
||||||
ConstraintKind.LOWER -> error("LOWER constraint shouldn't be used, please use UPPER")
|
ConstraintKind.LOWER -> error("LOWER constraint shouldn't be used, please use UPPER")
|
||||||
|
|
||||||
ConstraintKind.UPPER -> commonSystem.addSubtypeConstraint(lower, upper, substitutedConstraint.position)
|
ConstraintKind.UPPER -> commonSystem.addSubtypeConstraint(lower, upper, position)
|
||||||
|
|
||||||
ConstraintKind.EQUALITY ->
|
ConstraintKind.EQUALITY ->
|
||||||
with(commonSystem) {
|
with(commonSystem) {
|
||||||
addSubtypeConstraint(lower, upper, substitutedConstraint.position)
|
addSubtypeConstraint(lower, upper, position)
|
||||||
addSubtypeConstraint(upper, lower, substitutedConstraint.position)
|
addSubtypeConstraint(upper, lower, position)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
|
|||||||
Reference in New Issue
Block a user