[FIR] FirSerializationPluginClassChecker

This change affects nothing, because @Serializable is checked during
COMPILER_REQUIRED_ANNOTATIONS when typealiases
are not yet resolved, but in case we change something
in the Future and want to support it, we'd have one less problem
This commit is contained in:
Nikolay Lunyak
2023-01-10 12:50:45 +02:00
committed by Space Team
parent 6a1c9e9279
commit 647cdb1c9a
@@ -63,8 +63,9 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
private fun checkMetaSerializableApplicable(classSymbol: FirClassSymbol<out FirClass>, reporter: DiagnosticReporter) {
if (classSymbol.classKind != ClassKind.ANNOTATION_CLASS) return
if (!classSymbol.classId.isNestedClass) return
val anno = classSymbol.resolvedAnnotationsWithClassIds.find { it.classId == SerializationAnnotations.metaSerializableAnnotationClassId }
if (anno == null) return
val anno = classSymbol.resolvedAnnotationsWithClassIds
.find { it.toAnnotationClassId(session) == SerializationAnnotations.metaSerializableAnnotationClassId }
?: return
reporter.reportOn(anno.source, FirSerializationErrors.META_SERIALIZABLE_NOT_APPLICABLE)
}
@@ -92,7 +93,7 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
fun annotationsFilter(annotations: List<FirAnnotation>): List<Pair<ClassId, FirAnnotation>> {
return annotations
.filter { it.annotationTypeRef.toRegularClassSymbol(session)?.isInheritableSerialInfoAnnotation(session) == true }
.mapNotNull { annotation -> annotation.classId?.let { it to annotation } }
.mapNotNull { annotation -> annotation.toAnnotationClassId(session)?.let { it to annotation } }
}
val annotationByClassId = buildMap {