Consider T <: Nothing! as trivial during constraint incorporation

#KT-41149 In Progress
This commit is contained in:
Mikhail Zarechenskiy
2020-08-26 14:13:44 +03:00
parent 567e6ca9ca
commit 6a7ed96be5
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.resolve.calls.inference.components
import org.jetbrains.kotlin.resolve.calls.inference.model.Constraint
import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintKind
import org.jetbrains.kotlin.types.model.KotlinTypeMarker
import org.jetbrains.kotlin.types.model.SimpleTypeMarker
import org.jetbrains.kotlin.types.model.TypeSystemInferenceExtensionContext
import org.jetbrains.kotlin.types.model.TypeSystemInferenceExtensionContextDelegate
@@ -63,7 +64,10 @@ class TrivialConstraintTypeInferenceOracle private constructor(context: TypeSyst
private fun KotlinTypeMarker.containsOnlyNonNullableNothing(): Boolean =
contains { it.isNothing() } && !contains { it.isNullableNothing() }
contains {
(it.isNothing() || it.isFlexibleNothing()) &&
!(it is SimpleTypeMarker && it.typeConstructor().isNothingConstructor() && it.isMarkedNullable())
}
companion object {