[FIR, Parcelize] Fix checkers after primary ctor annotation changes
KT-56177
This commit is contained in:
committed by
Space Team
parent
eee66ab43f
commit
c9d68f6d3e
+3
-4
@@ -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.context.CheckerContext
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirAnnotationCallChecker
|
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirAnnotationCallChecker
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.findClosestClassOrObject
|
import org.jetbrains.kotlin.fir.analysis.checkers.findClosestClassOrObject
|
||||||
import org.jetbrains.kotlin.fir.correspondingProperty
|
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.hasAnnotation
|
import org.jetbrains.kotlin.fir.declarations.hasAnnotation
|
||||||
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
||||||
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassLikeType
|
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassLikeType
|
||||||
@@ -89,9 +88,9 @@ object FirParcelizeAnnotationChecker : FirAnnotationCallChecker() {
|
|||||||
|
|
||||||
checkIfTheContainingClassIsParcelize(annotationCall, context, reporter)
|
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.
|
// 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 enclosingClass = context.findClosestClassOrObject() ?: return
|
||||||
|
|
||||||
val annotationType = annotationCall.toAnnotationClassLikeType(context.session) ?: return
|
val annotationType = annotationCall.toAnnotationClassLikeType(context.session) ?: return
|
||||||
|
|||||||
+2
-1
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.diagnostics.hasValOrVar
|
|||||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirConstructorChecker
|
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.FirConstructor
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
||||||
@@ -37,7 +38,7 @@ object FirParcelizeConstructorChecker : FirConstructorChecker() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (valueParameter.defaultValue == null) {
|
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
|
it.toAnnotationClassId(context.session) in ParcelizeNames.IGNORED_ON_PARCEL_CLASS_IDS
|
||||||
}
|
}
|
||||||
if (illegalAnnotation != null) {
|
if (illegalAnnotation != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user