diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt index d25f762c56a1f..cc88da54ba6c2 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt @@ -504,10 +504,10 @@ internal fun ConeTypeContext.captureFromExpressionInternal(type: ConeKotlinType) val lowerIntersectedType = intersectTypes(replaceArgumentsWithCapturedArgumentsByIntersectionComponents(type.lowerBound) ?: return null) - .withNullability(ConeNullability.create(type.lowerBound.isMarkedNullable), this) + .withNullability(ConeNullability.create(type.lowerBound.isNullableType()), this) val upperIntersectedType = intersectTypes(replaceArgumentsWithCapturedArgumentsByIntersectionComponents(type.upperBound) ?: return null) - .withNullability(ConeNullability.create(type.upperBound.isMarkedNullable), this) + .withNullability(ConeNullability.create(type.upperBound.isNullableType()), this) ConeFlexibleType(lowerIntersectedType.coneLowerBoundIfFlexible(), upperIntersectedType.coneUpperBoundIfFlexible()) } @@ -515,7 +515,7 @@ internal fun ConeTypeContext.captureFromExpressionInternal(type: ConeKotlinType) is ConeSimpleKotlinType -> { intersectTypes( replaceArgumentsWithCapturedArgumentsByIntersectionComponents(type) ?: return null - ).withNullability(type.isMarkedNullable) as ConeKotlinType + ).withNullability(type.isNullableType()) as ConeKotlinType } } } diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/dfa/pos/11.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/dfa/pos/11.fir.kt index 1d5e999c2a201..adb39e9541992 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/dfa/pos/11.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/dfa/pos/11.fir.kt @@ -60,32 +60,32 @@ fun case_3(a: Int?, b: Float?, c: Double?, d: Boolean?) { false -> b null -> c }.apply { - ")!>this - if (this != null) { - ")!>this - ")!>this.equals(null) - ")!>this.propT - ")!>this.propAny - ")!>this.propNullableT - ")!>this.propNullableAny - ")!>this.funT() - ")!>this.funAny() - ")!>this.funNullableT() - ")!>this.funNullableAny() + ?")!>this + if (this != null) { + ? & kotlin.Number & kotlin.Comparable")!>this + ? & kotlin.Number & kotlin.Comparable")!>this.equals(null) + ? & kotlin.Number & kotlin.Comparable")!>this.propT + ? & kotlin.Number & kotlin.Comparable")!>this.propAny + ? & kotlin.Number & kotlin.Comparable")!>this.propNullableT + ? & kotlin.Number & kotlin.Comparable")!>this.propNullableAny + ? & kotlin.Number & kotlin.Comparable")!>this.funT() + ? & kotlin.Number & kotlin.Comparable")!>this.funAny() + ? & kotlin.Number & kotlin.Comparable")!>this.funNullableT() + ? & kotlin.Number & kotlin.Comparable")!>this.funNullableAny() } }.let { - ")!>it - if (it != null) { - ")!>it - ")!>it.equals(null) - ")!>it.propT - ")!>it.propAny - ")!>it.propNullableT - ")!>it.propNullableAny - ")!>it.funT() - ")!>it.funAny() - ")!>it.funNullableT() - ")!>it.funNullableAny() + ?")!>it + if (it != null) { + ? & kotlin.Number & kotlin.Comparable")!>it + ? & kotlin.Number & kotlin.Comparable")!>it.equals(null) + ? & kotlin.Number & kotlin.Comparable")!>it.propT + ? & kotlin.Number & kotlin.Comparable")!>it.propAny + ? & kotlin.Number & kotlin.Comparable")!>it.propNullableT + ? & kotlin.Number & kotlin.Comparable")!>it.propNullableAny + ? & kotlin.Number & kotlin.Comparable")!>it.funT() + ? & kotlin.Number & kotlin.Comparable")!>it.funAny() + ? & kotlin.Number & kotlin.Comparable")!>it.funNullableT() + ? & kotlin.Number & kotlin.Comparable")!>it.funNullableAny() } } }