From c9d68f6d3ea04b960299c8abd81cd899a6c63395 Mon Sep 17 00:00:00 2001 From: Kirill Rakhman Date: Mon, 13 Feb 2023 10:15:47 +0100 Subject: [PATCH] [FIR, Parcelize] Fix checkers after primary ctor annotation changes KT-56177 --- .../fir/diagnostics/FirParcelizeAnnotationChecker.kt | 7 +++---- .../fir/diagnostics/FirParcelizeConstructorChecker.kt | 3 ++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/parcelize/parcelize-compiler/parcelize.k2/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeAnnotationChecker.kt b/plugins/parcelize/parcelize-compiler/parcelize.k2/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeAnnotationChecker.kt index 60c3473f25e..b44af574644 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.k2/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeAnnotationChecker.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.k2/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeAnnotationChecker.kt @@ -11,8 +11,7 @@ import org.jetbrains.kotlin.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirAnnotationCallChecker 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.FirProperty import org.jetbrains.kotlin.fir.declarations.hasAnnotation import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId import org.jetbrains.kotlin.fir.declarations.toAnnotationClassLikeType @@ -89,9 +88,9 @@ object FirParcelizeAnnotationChecker : FirAnnotationCallChecker() { checkIfTheContainingClassIsParcelize(annotationCall, context, reporter) - // If we are looking at a parameter of the primary constructor of a class, check that the + // If we are looking at a property defined in the primary constructor of a class, check that the // enclosing class doesn't have the same TypeParceler annotation. - if (annotationContainer is FirValueParameter && annotationContainer.correspondingProperty?.fromPrimaryConstructor == true) { + if (annotationContainer is FirProperty && annotationContainer.fromPrimaryConstructor == true) { val enclosingClass = context.findClosestClassOrObject() ?: return val annotationType = annotationCall.toAnnotationClassLikeType(context.session) ?: return diff --git a/plugins/parcelize/parcelize-compiler/parcelize.k2/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeConstructorChecker.kt b/plugins/parcelize/parcelize-compiler/parcelize.k2/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeConstructorChecker.kt index 9d96faabcc8..32d42218434 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.k2/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeConstructorChecker.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.k2/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeConstructorChecker.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.diagnostics.hasValOrVar import org.jetbrains.kotlin.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirConstructorChecker +import org.jetbrains.kotlin.fir.correspondingProperty import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId @@ -37,7 +38,7 @@ object FirParcelizeConstructorChecker : FirConstructorChecker() { ) } if (valueParameter.defaultValue == null) { - val illegalAnnotation = valueParameter.annotations.firstOrNull { + val illegalAnnotation = valueParameter.correspondingProperty?.annotations?.firstOrNull { it.toAnnotationClassId(context.session) in ParcelizeNames.IGNORED_ON_PARCEL_CLASS_IDS } if (illegalAnnotation != null) {