[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:
committed by
Space Team
parent
647cdb1c9a
commit
cf73d59e29
+2
-2
@@ -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 }
|
||||
|
||||
|
||||
+5
-9
@@ -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 }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user