diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirActualTypeAliasChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirActualTypeAliasChecker.kt index 725267a4ea0..713c68f33d5 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirActualTypeAliasChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirActualTypeAliasChecker.kt @@ -13,13 +13,16 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.declarations.utils.isActual import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol +import org.jetbrains.kotlin.fir.types.ProjectionKind +import org.jetbrains.kotlin.fir.types.coneType import org.jetbrains.kotlin.types.Variance object FirActualTypeAliasChecker : FirTypeAliasChecker() { override fun check(declaration: FirTypeAlias, context: CheckerContext, reporter: DiagnosticReporter) { if (!declaration.isActual) return - val expandedTypeSymbol = declaration.expandedTypeRef.toClassLikeSymbol(context.session) ?: return + val expandedTypeRef = declaration.expandedTypeRef + val expandedTypeSymbol = expandedTypeRef.toClassLikeSymbol(context.session) ?: return if (expandedTypeSymbol is FirTypeAliasSymbol) { reporter.reportOn(declaration.source, FirErrors.ACTUAL_TYPE_ALIAS_NOT_TO_CLASS, context) @@ -31,5 +34,12 @@ object FirActualTypeAliasChecker : FirTypeAliasChecker() { break } } + + for (typeArgument in expandedTypeRef.coneType.typeArguments) { + if (typeArgument.kind != ProjectionKind.INVARIANT) { + reporter.reportOn(declaration.source, FirErrors.ACTUAL_TYPE_ALIAS_WITH_USE_SITE_VARIANCE, context) + break + } + } } } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/genericClassImplTypeAlias.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/genericClassImplTypeAlias.fir.kt index 2aca589ffb6..8d82b54c0ba 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/genericClassImplTypeAlias.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/genericClassImplTypeAlias.fir.kt @@ -22,9 +22,9 @@ actual typealias C1 = String actual typealias C4 = MutableMap actual typealias C5 = MutableMap actual typealias C6 = MutableList -actual typealias C7 = MutableList -actual typealias C8 = MutableList<*> -actual typealias C9 = MutableList +actual typealias C7 = MutableList +actual typealias C8 = MutableList<*> +actual typealias C9 = MutableList typealias Tmp = MutableList actual typealias C10 = Tmp