Support enhancement for type parameter based types

Load them as non-flexible when a relevant type parameter has non-flexible upper bound
(Currently, it only works for case of codeanalysis annotations)
This commit is contained in:
Denis Zharkov
2019-08-09 15:22:31 +03:00
committed by Victor Petukhov
parent fa2578c795
commit e9e05c53e1
13 changed files with 204 additions and 15 deletions
@@ -11,8 +11,11 @@ import org.jetbrains.kotlin.name.FqName
data class JavaDefaultQualifiers(
val nullabilityQualifier: NullabilityQualifierWithMigrationStatus,
val qualifierApplicabilityTypes: Collection<AnnotationQualifierApplicabilityType>
)
val qualifierApplicabilityTypes: Collection<AnnotationQualifierApplicabilityType>,
val affectsTypeParameterBasedTypes: Boolean = nullabilityQualifier.qualifier == NullabilityQualifier.NOT_NULL
) {
val makesTypeParameterNotNull get() = nullabilityQualifier.qualifier == NullabilityQualifier.NOT_NULL && affectsTypeParameterBasedTypes
}
val TYPE_QUALIFIER_NICKNAME_FQNAME = FqName("javax.annotation.meta.TypeQualifierNickname")
val TYPE_QUALIFIER_FQNAME = FqName("javax.annotation.meta.TypeQualifier")
@@ -45,7 +48,8 @@ val BUILT_IN_TYPE_QUALIFIER_DEFAULT_ANNOTATIONS = mapOf(
),
JSPECIFY_DEFAULT_NOT_NULL to JavaDefaultQualifiers(
NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NOT_NULL),
DEFAULT_JSPECIFY_APPLICABILITY
DEFAULT_JSPECIFY_APPLICABILITY,
affectsTypeParameterBasedTypes = false
),
JSPECIFY_DEFAULT_NULLNESS_UNKNOWN to JavaDefaultQualifiers(
NullabilityQualifierWithMigrationStatus(NullabilityQualifier.FORCE_FLEXIBILITY),
@@ -16,4 +16,4 @@ class JavaTypeQualifiersByElementType(val defaultQualifiers: QualifierByApplicab
): JavaDefaultQualifiers? {
return defaultQualifiers[applicabilityType]
}
}
}