From 647cdb1c9ac020802c292eaebae8a1c65930cef4 Mon Sep 17 00:00:00 2001 From: Nikolay Lunyak Date: Tue, 10 Jan 2023 12:50:45 +0200 Subject: [PATCH] [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 --- .../fir/checkers/FirSerializationPluginClassChecker.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/checkers/FirSerializationPluginClassChecker.kt b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/checkers/FirSerializationPluginClassChecker.kt index 86a9cdb1d2e..806a0c7ffc6 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/checkers/FirSerializationPluginClassChecker.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/checkers/FirSerializationPluginClassChecker.kt @@ -63,8 +63,9 @@ object FirSerializationPluginClassChecker : FirClassChecker() { private fun checkMetaSerializableApplicable(classSymbol: FirClassSymbol, 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): List> { 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 {