diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt index d98bf470821..2ee89bb4090 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt @@ -271,7 +271,7 @@ interface ConeInferenceContext : TypeSystemInferenceExtensionContext, TypeSubstitutorMarker { override fun substituteType(type: ConeKotlinType): ConeKotlinType? { val new = map[type.typeConstructor()] ?: return null - return new as ConeKotlinType + return makeNullableIfNeed(type.isMarkedNullable, new as ConeKotlinType) } } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/substitution/ConeSubstitutor.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/substitution/ConeSubstitutor.kt index 2fd093d9203..314e471fcab 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/substitution/ConeSubstitutor.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/substitution/ConeSubstitutor.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.resolve.substitution +import org.jetbrains.kotlin.fir.resolve.withNullability import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterSymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.impl.ConeAbbreviatedTypeImpl @@ -44,6 +45,11 @@ abstract class AbstractConeSubstitutor : ConeSubstitutor { abstract fun substituteType(type: ConeKotlinType): ConeKotlinType? + fun makeNullableIfNeed(isNullable: Boolean, type: ConeKotlinType?): ConeKotlinType? { + if (!isNullable) return type + return type?.withNullability(ConeNullability.NULLABLE) + } + override fun substituteOrSelf(type: ConeKotlinType): ConeKotlinType { return substituteOrNull(type) ?: type } @@ -124,6 +130,6 @@ class ConeSubstitutorByMap(val substitution: Map