Rename Jsr305State -> JavaTypeEnhancementState

Also, rename some of the properties
It's needed to store status for codeanalysis annotation in that class
This commit is contained in:
Denis Zharkov
2019-08-14 12:54:55 +03:00
committed by Victor Petukhov
parent 2f04a1505d
commit 6c37574fce
22 changed files with 109 additions and 95 deletions
@@ -26,11 +26,11 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
import org.jetbrains.kotlin.resolve.descriptorUtil.firstArgument
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.utils.Jsr305State
import org.jetbrains.kotlin.utils.JavaTypeEnhancementState
import org.jetbrains.kotlin.utils.ReportLevel
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
class AnnotationTypeQualifierResolver(storageManager: StorageManager, private val jsr305State: Jsr305State) {
class AnnotationTypeQualifierResolver(storageManager: StorageManager, private val javaTypeEnhancementState: JavaTypeEnhancementState) {
class TypeQualifierWithApplicability(
private val typeQualifier: AnnotationDescriptor,
private val applicability: Int
@@ -68,7 +68,7 @@ class AnnotationTypeQualifierResolver(storageManager: StorageManager, private va
}
fun resolveTypeQualifierAnnotation(annotationDescriptor: AnnotationDescriptor): AnnotationDescriptor? {
if (jsr305State.disabled) {
if (javaTypeEnhancementState.disabledJsr305) {
return null
}
@@ -79,7 +79,7 @@ class AnnotationTypeQualifierResolver(storageManager: StorageManager, private va
}
fun resolveQualifierBuiltInDefaultAnnotation(annotationDescriptor: AnnotationDescriptor): JavaDefaultQualifiers? {
if (jsr305State.disabled) {
if (javaTypeEnhancementState.disabledJsr305) {
return null
}
@@ -92,7 +92,7 @@ class AnnotationTypeQualifierResolver(storageManager: StorageManager, private va
}
fun resolveTypeQualifierDefaultAnnotation(annotationDescriptor: AnnotationDescriptor): TypeQualifierWithApplicability? {
if (jsr305State.disabled) {
if (javaTypeEnhancementState.disabledJsr305) {
return null
}
@@ -120,11 +120,11 @@ class AnnotationTypeQualifierResolver(storageManager: StorageManager, private va
fun resolveJsr305AnnotationState(annotationDescriptor: AnnotationDescriptor): ReportLevel {
resolveJsr305CustomState(annotationDescriptor)?.let { return it }
return jsr305State.global
return javaTypeEnhancementState.globalJsr305Level
}
fun resolveJsr305CustomState(annotationDescriptor: AnnotationDescriptor): ReportLevel? {
jsr305State.user[annotationDescriptor.fqName?.asString()]?.let { return it }
javaTypeEnhancementState.userDefinedLevelForSpecificJsr305Annotation[annotationDescriptor.fqName?.asString()]?.let { return it }
return annotationDescriptor.annotationClass?.migrationAnnotationStatus()
}
@@ -132,7 +132,7 @@ class AnnotationTypeQualifierResolver(storageManager: StorageManager, private va
val enumValue = annotations.findAnnotation(MIGRATION_ANNOTATION_FQNAME)?.firstArgument() as? EnumValue
?: return null
jsr305State.migration?.let { return it }
javaTypeEnhancementState.migrationLevelForJsr305?.let { return it }
return when (enumValue.enumEntryName.asString()) {
"STRICT" -> ReportLevel.STRICT
@@ -157,7 +157,7 @@ class AnnotationTypeQualifierResolver(storageManager: StorageManager, private va
else -> emptyList()
}
val disabled: Boolean = jsr305State.disabled
val disabled: Boolean = javaTypeEnhancementState.disabledJsr305
}
private val ClassDescriptor.isAnnotatedWithTypeQualifier: Boolean
@@ -40,13 +40,13 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull
import org.jetbrains.kotlin.types.*
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker
import org.jetbrains.kotlin.types.typeUtil.isTypeParameter
import org.jetbrains.kotlin.utils.Jsr305State
import org.jetbrains.kotlin.utils.JavaTypeEnhancementState
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
class SignatureEnhancement(
private val annotationTypeQualifierResolver: AnnotationTypeQualifierResolver,
private val jsr305State: Jsr305State,
private val javaTypeEnhancementState: JavaTypeEnhancementState,
private val typeEnhancement: JavaTypeEnhancement
) {
@@ -117,10 +117,10 @@ class SignatureEnhancement(
annotationFqName in NOT_NULL_ANNOTATIONS -> NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NOT_NULL)
annotationFqName == JAVAX_NONNULL_ANNOTATION -> annotationDescriptor.extractNullabilityTypeFromArgument()
annotationFqName == COMPATQUAL_NULLABLE_ANNOTATION && jsr305State.enableCompatqualCheckerFrameworkAnnotations ->
annotationFqName == COMPATQUAL_NULLABLE_ANNOTATION && javaTypeEnhancementState.enableCompatqualCheckerFrameworkAnnotations ->
NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NULLABLE)
annotationFqName == COMPATQUAL_NONNULL_ANNOTATION && jsr305State.enableCompatqualCheckerFrameworkAnnotations ->
annotationFqName == COMPATQUAL_NONNULL_ANNOTATION && javaTypeEnhancementState.enableCompatqualCheckerFrameworkAnnotations ->
NullabilityQualifierWithMigrationStatus(NullabilityQualifier.NOT_NULL)
annotationFqName == ANDROIDX_RECENTLY_NON_NULL_ANNOTATION -> NullabilityQualifierWithMigrationStatus(
@@ -43,7 +43,7 @@ import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfigu
import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.types.checker.NewKotlinTypeChecker
import org.jetbrains.kotlin.utils.Jsr305State
import org.jetbrains.kotlin.utils.JavaTypeEnhancementState
class RuntimeModuleData private constructor(
val deserialization: DeserializationComponents,
@@ -110,14 +110,14 @@ fun makeLazyJavaPackageFragmentFromClassLoaderProvider(
singleModuleClassResolver: ModuleClassResolver,
packagePartProvider: PackagePartProvider = PackagePartProvider.Empty
): LazyJavaPackageFragmentProvider {
val annotationTypeQualifierResolver = AnnotationTypeQualifierResolver(storageManager, Jsr305State.DISABLED)
val annotationTypeQualifierResolver = AnnotationTypeQualifierResolver(storageManager, JavaTypeEnhancementState.DISABLED_JSR_305)
val javaResolverComponents = JavaResolverComponents(
storageManager, ReflectJavaClassFinder(classLoader), reflectKotlinClassFinder, deserializedDescriptorResolver,
SignaturePropagator.DO_NOTHING, RuntimeErrorReporter, JavaResolverCache.EMPTY,
JavaPropertyInitializerEvaluator.DoNothing, SamConversionResolverImpl(storageManager, emptyList()), RuntimeSourceElementFactory,
singleModuleClassResolver, packagePartProvider, SupertypeLoopChecker.EMPTY, LookupTracker.DO_NOTHING, module,
ReflectionTypes(module, notFoundClasses), annotationTypeQualifierResolver,
SignatureEnhancement(annotationTypeQualifierResolver, Jsr305State.DISABLED, JavaTypeEnhancement(JavaResolverSettings.Default)),
SignatureEnhancement(annotationTypeQualifierResolver, JavaTypeEnhancementState.DISABLED_JSR_305, JavaTypeEnhancement(JavaResolverSettings.Default)),
JavaClassesTracker.Default, JavaResolverSettings.Default, NewKotlinTypeChecker.Default
)
@@ -30,37 +30,37 @@ enum class ReportLevel(val description: String) {
val isIgnore: Boolean get() = this == ReportLevel.IGNORE
}
data class Jsr305State(
val global: ReportLevel,
val migration: ReportLevel?,
val user: Map<String, ReportLevel>,
val enableCompatqualCheckerFrameworkAnnotations: Boolean = COMPATQUAL_CHECKER_FRAMEWORK_ANNOTATIONS_SUPPORT_DEFAULT_VALUE
class JavaTypeEnhancementState(
val globalJsr305Level: ReportLevel,
val migrationLevelForJsr305: ReportLevel?,
val userDefinedLevelForSpecificJsr305Annotation: Map<String, ReportLevel>,
val enableCompatqualCheckerFrameworkAnnotations: Boolean = COMPATQUAL_CHECKER_FRAMEWORK_ANNOTATIONS_SUPPORT_DEFAULT_VALUE
) {
val description: Array<String> by lazy {
val result = mutableListOf<String>()
result.add(global.description)
result.add(globalJsr305Level.description)
migration?.let { result.add("under-migration:${it.description}") }
migrationLevelForJsr305?.let { result.add("under-migration:${it.description}") }
user.forEach {
userDefinedLevelForSpecificJsr305Annotation.forEach {
result.add("@${it.key}:${it.value.description}")
}
result.toTypedArray()
}
val disabled: Boolean get() = this === DISABLED
val disabledJsr305: Boolean get() = this === DISABLED_JSR_305
companion object {
const val COMPATQUAL_CHECKER_FRAMEWORK_ANNOTATIONS_SUPPORT_DEFAULT_VALUE = true
@JvmField
val DEFAULT: Jsr305State = Jsr305State(ReportLevel.WARN, null, emptyMap())
val DEFAULT: JavaTypeEnhancementState = JavaTypeEnhancementState(ReportLevel.WARN, null, emptyMap())
@JvmField
val DISABLED: Jsr305State = Jsr305State(ReportLevel.IGNORE, ReportLevel.IGNORE, emptyMap())
val DISABLED_JSR_305: JavaTypeEnhancementState = JavaTypeEnhancementState(ReportLevel.IGNORE, ReportLevel.IGNORE, emptyMap())
@JvmField
val STRICT: Jsr305State = Jsr305State(ReportLevel.STRICT, ReportLevel.STRICT, emptyMap())
val STRICT: JavaTypeEnhancementState = JavaTypeEnhancementState(ReportLevel.STRICT, ReportLevel.STRICT, emptyMap())
}
}