[FIR] Support of ACTUAL_TYPE_ALIAS_WITH_USE_SITE_VARIANCE diagnostic
This commit is contained in:
committed by
Space Team
parent
cf1bd9837a
commit
3e33258f36
+11
-1
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Vendored
+3
-3
@@ -22,9 +22,9 @@ actual typealias C1 = String
|
||||
actual typealias C4<D, E> = MutableMap<D, E>
|
||||
actual typealias C5<F, G> = MutableMap<G, F>
|
||||
actual typealias C6<H> = MutableList<H>
|
||||
actual typealias C7<I> = MutableList<out I>
|
||||
actual typealias C8<J> = MutableList<*>
|
||||
actual typealias C9<K> = MutableList<in K>
|
||||
<!ACTUAL_TYPE_ALIAS_WITH_USE_SITE_VARIANCE!>actual typealias C7<I> = MutableList<out I><!>
|
||||
<!ACTUAL_TYPE_ALIAS_WITH_USE_SITE_VARIANCE!>actual typealias C8<J> = MutableList<*><!>
|
||||
<!ACTUAL_TYPE_ALIAS_WITH_USE_SITE_VARIANCE!>actual typealias C9<K> = MutableList<in K><!>
|
||||
|
||||
typealias Tmp<K> = MutableList<K>
|
||||
<!ACTUAL_TYPE_ALIAS_NOT_TO_CLASS!>actual typealias C10<L> = Tmp<L><!>
|
||||
|
||||
Reference in New Issue
Block a user