[NI] Resolve type variable to Nothing for TO_SUBTYPE direction.
This commit is contained in:
+5
-1
@@ -38,6 +38,8 @@ class ResultTypeResolver(
|
||||
fun findResultType(c: Context, variableWithConstraints: VariableWithConstraints, direction: ResolveDirection): UnwrappedType? {
|
||||
findResultIfThereIsEqualsConstraint(c, variableWithConstraints, allowedFixToNotProperType = false)?.let { return it }
|
||||
|
||||
val builtIns = variableWithConstraints.typeVariable.freshTypeConstructor.builtIns
|
||||
|
||||
if (direction == ResolveDirection.TO_SUBTYPE || direction == ResolveDirection.UNKNOWN) {
|
||||
val lowerConstraints = variableWithConstraints.constraints.filter { it.kind == ConstraintKind.LOWER && c.isProperType(it.type) }
|
||||
if (lowerConstraints.isNotEmpty()) {
|
||||
@@ -64,6 +66,8 @@ class ResultTypeResolver(
|
||||
}
|
||||
}
|
||||
|
||||
if (direction == ResolveDirection.TO_SUBTYPE) return builtIns.nothingType
|
||||
|
||||
// direction == TO_SUPER or there is no LOWER bounds
|
||||
val upperConstraints = variableWithConstraints.constraints.filter { it.kind == ConstraintKind.UPPER && c.isProperType(it.type) }
|
||||
if (upperConstraints.isNotEmpty()) {
|
||||
@@ -72,7 +76,7 @@ class ResultTypeResolver(
|
||||
return typeApproximator.approximateToSubType(upperType, TypeApproximatorConfiguration.CapturedTypesApproximation) ?: upperType
|
||||
}
|
||||
|
||||
return null
|
||||
return return builtIns.anyType
|
||||
}
|
||||
|
||||
fun findResultIfThereIsEqualsConstraint(
|
||||
|
||||
Reference in New Issue
Block a user