[FIR] Remove FirAnnotation.classId from FirParcelize

The same reasoning as with the serialization. If we
decide to support it, we wouldn't need to think
about unexpanded types.
This commit is contained in:
Nikolay Lunyak
2023-01-10 19:46:20 +02:00
committed by Space Team
parent 647cdb1c9a
commit cf73d59e29
3 changed files with 9 additions and 13 deletions
@@ -13,9 +13,9 @@ import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirAnnotationCallCh
import org.jetbrains.kotlin.fir.analysis.checkers.findClosestClassOrObject
import org.jetbrains.kotlin.fir.correspondingProperty
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
import org.jetbrains.kotlin.fir.declarations.utils.fromPrimaryConstructor
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.classId
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
@@ -76,7 +76,7 @@ object FirParcelizeAnnotationChecker : FirAnnotationCallChecker() {
val annotationContainer = context.annotationContainers.lastOrNull()
val duplicatingAnnotationCount = annotationContainer
?.annotations
?.filter { it.classId in TYPE_PARCELER_CLASS_IDS }
?.filter { it.toAnnotationClassId(context.session) in TYPE_PARCELER_CLASS_IDS }
?.mapNotNull { it.typeArguments.takeIf { it.size == 2 }?.first()?.toConeTypeProjection()?.type }
?.count { it == thisMappedType }
@@ -12,12 +12,8 @@ import org.jetbrains.kotlin.diagnostics.reportOn
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirClassChecker
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.constructors
import org.jetbrains.kotlin.fir.declarations.delegateFieldsMap
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.expressions.classId
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.lookupSuperTypes
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
@@ -124,10 +120,10 @@ fun FirClassSymbol<*>?.isParcelize(session: FirSession): Boolean {
}
if (this == null) return false
if (this.annotations.any { it.classId in PARCELIZE_CLASS_CLASS_IDS }) return true
return resolvedSuperTypeRefs.any {
val symbol = it.type.fullyExpandedType(session).toRegularClassSymbol(session) ?: return@any false
symbol.annotations.any { it.classId in PARCELIZE_CLASS_CLASS_IDS }
if (this.annotations.any { it.toAnnotationClassId(session) in PARCELIZE_CLASS_CLASS_IDS }) return true
return resolvedSuperTypeRefs.any { superTypeRef ->
val symbol = superTypeRef.type.fullyExpandedType(session).toRegularClassSymbol(session) ?: return@any false
symbol.annotations.any { it.toAnnotationClassId(session) in PARCELIZE_CLASS_CLASS_IDS }
}
}
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirConstructorChecker
import org.jetbrains.kotlin.fir.declarations.FirConstructor
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.expressions.classId
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
import org.jetbrains.kotlin.parcelize.ParcelizeNames
object FirParcelizeConstructorChecker : FirConstructorChecker() {
@@ -38,7 +38,7 @@ object FirParcelizeConstructorChecker : FirConstructorChecker() {
}
if (valueParameter.defaultValue == null) {
val illegalAnnotation = valueParameter.annotations.firstOrNull {
it.classId in ParcelizeNames.IGNORED_ON_PARCEL_CLASS_IDS
it.toAnnotationClassId(context.session) in ParcelizeNames.IGNORED_ON_PARCEL_CLASS_IDS
}
if (illegalAnnotation != null) {
reporter.reportOn(