Don't forget jspecify annotation during extracting nullability from known annotations

This commit is contained in:
Victor Petukhov
2021-06-02 13:19:04 +03:00
parent 46d0b16142
commit 4173f2d294
2 changed files with 10 additions and 5 deletions
@@ -46,8 +46,11 @@ private fun FirAnnotationCall.extractNullabilityFromKnownAnnotations(javaTypeEnh
if (reportLevel == ReportLevel.IGNORE) return null if (reportLevel == ReportLevel.IGNORE) return null
return when (annotationClassId) { return when (annotationClassId) {
in NULLABLE_ANNOTATION_IDS -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NULLABLE) in NULLABLE_ANNOTATION_IDS -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NULLABLE, reportLevel.isWarning)
in NOT_NULL_ANNOTATION_IDS -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NOT_NULL) in NOT_NULL_ANNOTATION_IDS -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NOT_NULL, reportLevel.isWarning)
JSPECIFY_NULLABLE_ANNOTATION_ID -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NULLABLE, reportLevel.isWarning)
JSPECIFY_NULLNESS_UNKNOWN_ANNOTATION_ID ->
NullabilityQualifierWithMigrationStatus(NullabilityQualifier.FORCE_FLEXIBILITY, reportLevel.isWarning)
JAVAX_NONNULL_ANNOTATION_ID -> extractNullabilityTypeFromArgument() JAVAX_NONNULL_ANNOTATION_ID -> extractNullabilityTypeFromArgument()
COMPATQUAL_NULLABLE_ANNOTATION_ID -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NULLABLE) COMPATQUAL_NULLABLE_ANNOTATION_ID -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NULLABLE)
COMPATQUAL_NONNULL_ANNOTATION_ID -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NOT_NULL) COMPATQUAL_NONNULL_ANNOTATION_ID -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NOT_NULL)
@@ -84,3 +87,5 @@ private val COMPATQUAL_NULLABLE_ANNOTATION_ID = ClassId.topLevel(COMPATQUAL_NULL
val COMPATQUAL_NONNULL_ANNOTATION_ID = ClassId.topLevel(COMPATQUAL_NONNULL_ANNOTATION) val COMPATQUAL_NONNULL_ANNOTATION_ID = ClassId.topLevel(COMPATQUAL_NONNULL_ANNOTATION)
val ANDROIDX_RECENTLY_NON_NULL_ANNOTATION_ID = ClassId.topLevel(ANDROIDX_RECENTLY_NON_NULL_ANNOTATION) val ANDROIDX_RECENTLY_NON_NULL_ANNOTATION_ID = ClassId.topLevel(ANDROIDX_RECENTLY_NON_NULL_ANNOTATION)
private val ANDROIDX_RECENTLY_NULLABLE_ANNOTATION_ID = ClassId.topLevel(ANDROIDX_RECENTLY_NULLABLE_ANNOTATION) private val ANDROIDX_RECENTLY_NULLABLE_ANNOTATION_ID = ClassId.topLevel(ANDROIDX_RECENTLY_NULLABLE_ANNOTATION)
private val JSPECIFY_NULLABLE_ANNOTATION_ID = ClassId.topLevel(JSPECIFY_NULLABLE)
private val JSPECIFY_NULLNESS_UNKNOWN_ANNOTATION_ID = ClassId.topLevel(JSPECIFY_NULLNESS_UNKNOWN)
@@ -97,14 +97,12 @@ class SignatureEnhancement(
} else migrationStatus } else migrationStatus
} }
private fun getReportLevel(annotationFqName: FqName) = javaTypeEnhancementState.getReportLevelForAnnotation(annotationFqName)
private fun commonMigrationStatus( private fun commonMigrationStatus(
annotationFqName: FqName, annotationFqName: FqName,
annotationDescriptor: AnnotationDescriptor, annotationDescriptor: AnnotationDescriptor,
isForWarningOnly: Boolean = false isForWarningOnly: Boolean = false
): NullabilityQualifierWithMigrationStatus? { ): NullabilityQualifierWithMigrationStatus? {
val reportLevel = getReportLevel(annotationFqName) val reportLevel = javaTypeEnhancementState.getReportLevelForAnnotation(annotationFqName)
if (reportLevel.isIgnore) return null if (reportLevel.isIgnore) return null
@@ -113,6 +111,8 @@ class SignatureEnhancement(
return when (annotationFqName) { return when (annotationFqName) {
in NULLABLE_ANNOTATIONS -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NULLABLE, isForWarning) in NULLABLE_ANNOTATIONS -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NULLABLE, isForWarning)
in NOT_NULL_ANNOTATIONS -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NOT_NULL, isForWarning) in NOT_NULL_ANNOTATIONS -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NOT_NULL, isForWarning)
JSPECIFY_NULLABLE -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NULLABLE, isForWarning)
JSPECIFY_NULLNESS_UNKNOWN -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.FORCE_FLEXIBILITY, isForWarning)
JAVAX_NONNULL_ANNOTATION -> annotationDescriptor.extractNullabilityTypeFromArgument(isForWarning) JAVAX_NONNULL_ANNOTATION -> annotationDescriptor.extractNullabilityTypeFromArgument(isForWarning)
COMPATQUAL_NULLABLE_ANNOTATION -> COMPATQUAL_NULLABLE_ANNOTATION ->
NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NULLABLE, isForWarning) NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NULLABLE, isForWarning)