[FIR] Support of ACTUAL_TYPE_ALIAS_WITH_USE_SITE_VARIANCE diagnostic

This commit is contained in:
Ivan Kochurkin
2023-02-16 22:41:18 +01:00
committed by Space Team
parent cf1bd9837a
commit 3e33258f36
2 changed files with 14 additions and 4 deletions
@@ -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
}
}
}
}