diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt index a0f126a6636..54b9d15e671 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt @@ -256,6 +256,9 @@ class Fir2IrImplicitCastInserter( } private fun ConeKotlinType.acceptsNullValues(): Boolean { + if (this is ConeCapturedType && this.constructor.projection.kind == ProjectionKind.IN) { + return constructor.projection.type!!.canBeNull(session) + } return canBeNull(session) || hasEnhancedNullability } 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 a9f3ee5bbf7..28ecda80159 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 @@ -821,6 +821,7 @@ fun ConeKotlinType.canBeNull(session: FirSession): Boolean { it.coneType.fullyExpandedType(session).canBeNull(session) } is ConeIntersectionType -> intersectedTypes.all { it.canBeNull(session) } + is ConeCapturedType -> constructor.supertypes?.all { it.canBeNull(session) } == true else -> fullyExpandedType(session).isNullable } }