[NI] Don't discriminate Nothing-type from resulting ones

^KT-32106 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2019-06-21 13:28:05 +03:00
committed by Pavel Kirpichenkov
parent a8e9a6a1d0
commit ae1630f376
21 changed files with 55 additions and 32 deletions
@@ -23,15 +23,6 @@ class TrivialConstraintTypeInferenceOracle private constructor(context: TypeSyst
return constraint.kind == ConstraintKind.LOWER && constraint.type.typeConstructor().isNothingConstructor()
}
// This function controls the choice between sub and super result type
// Even that Nothing(?) is the most specific type for subtype, it doesn't bring valuable information to the user,
// therefore it is discriminated in favor of supertype
fun isSuitableResultedType(
resultType: KotlinTypeMarker
): Boolean {
return !resultType.typeConstructor().isNothingConstructor()
}
// It's possible to generate Nothing-like constraints inside incorporation mechanism:
// For instance, when two type variables are in subtyping relation `T <: K`, after incorporation
// there will be constraint `approximation(out K) <: K` => `Nothing <: K`, which is innocent