diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/expression/FirJavaGenericVarianceViolationTypeChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/expression/FirJavaGenericVarianceViolationTypeChecker.kt index 844e7aa3811..9ad18d0b8a2 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/expression/FirJavaGenericVarianceViolationTypeChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/expression/FirJavaGenericVarianceViolationTypeChecker.kt @@ -176,7 +176,7 @@ object FirJavaGenericVarianceViolationTypeChecker : FirFunctionCallChecker() { return when (this) { is ConeKotlinTypeProjectionOut -> if (isCovariant) type else this is ConeKotlinTypeProjectionIn -> ConeKotlinTypeProjectionIn(type.removeOutProjection(!isCovariant)) - is ConeStarProjection -> if (isCovariant) StandardTypes.Any else this + is ConeStarProjection -> if (isCovariant) StandardTypes.NullableAny else this // Don't remove nested projections for types at invariant position. is ConeKotlinTypeConflictingProjection, is ConeKotlinType -> this diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/Primitives.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/Primitives.kt index 4998afa2282..5750b6dadcc 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/Primitives.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/Primitives.kt @@ -25,10 +25,11 @@ object StandardTypes { val Double: ConeClassLikeType = StandardClassIds.Double.createType() val Any: ConeClassLikeType = StandardClassIds.Any.createType() + val NullableAny: ConeClassLikeType = StandardClassIds.Any.createType(isNullable = true) } -private fun ClassId.createType(): ConeClassLikeType = - ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(this), emptyArray(), isNullable = false) +private fun ClassId.createType(isNullable: Boolean = false): ConeClassLikeType = + ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(this), emptyArray(), isNullable) fun ConeClassLikeType.isDouble(): Boolean = lookupTag.classId == StandardClassIds.Double fun ConeClassLikeType.isFloat(): Boolean = lookupTag.classId == StandardClassIds.Float