Reformat: context (Java resolve)
This commit is contained in:
@@ -45,35 +45,35 @@ import org.jetbrains.kotlin.storage.StorageManager
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class JavaResolverComponents(
|
class JavaResolverComponents(
|
||||||
val storageManager: StorageManager,
|
val storageManager: StorageManager,
|
||||||
val finder: JavaClassFinder,
|
val finder: JavaClassFinder,
|
||||||
val kotlinClassFinder: KotlinClassFinder,
|
val kotlinClassFinder: KotlinClassFinder,
|
||||||
val deserializedDescriptorResolver: DeserializedDescriptorResolver,
|
val deserializedDescriptorResolver: DeserializedDescriptorResolver,
|
||||||
val signaturePropagator: SignaturePropagator,
|
val signaturePropagator: SignaturePropagator,
|
||||||
val errorReporter: ErrorReporter,
|
val errorReporter: ErrorReporter,
|
||||||
val javaResolverCache: JavaResolverCache,
|
val javaResolverCache: JavaResolverCache,
|
||||||
val javaPropertyInitializerEvaluator: JavaPropertyInitializerEvaluator,
|
val javaPropertyInitializerEvaluator: JavaPropertyInitializerEvaluator,
|
||||||
val samConversionResolver: SamConversionResolver,
|
val samConversionResolver: SamConversionResolver,
|
||||||
val sourceElementFactory: JavaSourceElementFactory,
|
val sourceElementFactory: JavaSourceElementFactory,
|
||||||
val moduleClassResolver: ModuleClassResolver,
|
val moduleClassResolver: ModuleClassResolver,
|
||||||
val packagePartProvider: PackagePartProvider,
|
val packagePartProvider: PackagePartProvider,
|
||||||
val supertypeLoopChecker: SupertypeLoopChecker,
|
val supertypeLoopChecker: SupertypeLoopChecker,
|
||||||
val lookupTracker: LookupTracker,
|
val lookupTracker: LookupTracker,
|
||||||
val module: ModuleDescriptor,
|
val module: ModuleDescriptor,
|
||||||
val reflectionTypes: ReflectionTypes,
|
val reflectionTypes: ReflectionTypes,
|
||||||
val annotationTypeQualifierResolver: AnnotationTypeQualifierResolver,
|
val annotationTypeQualifierResolver: AnnotationTypeQualifierResolver,
|
||||||
val signatureEnhancement: SignatureEnhancement,
|
val signatureEnhancement: SignatureEnhancement,
|
||||||
val javaClassesTracker: JavaClassesTracker,
|
val javaClassesTracker: JavaClassesTracker,
|
||||||
val settings: JavaResolverSettings
|
val settings: JavaResolverSettings
|
||||||
) {
|
) {
|
||||||
fun replace(
|
fun replace(
|
||||||
javaResolverCache: JavaResolverCache = this.javaResolverCache
|
javaResolverCache: JavaResolverCache = this.javaResolverCache
|
||||||
) = JavaResolverComponents(
|
) = JavaResolverComponents(
|
||||||
storageManager, finder, kotlinClassFinder, deserializedDescriptorResolver,
|
storageManager, finder, kotlinClassFinder, deserializedDescriptorResolver,
|
||||||
signaturePropagator, errorReporter, javaResolverCache,
|
signaturePropagator, errorReporter, javaResolverCache,
|
||||||
javaPropertyInitializerEvaluator, samConversionResolver, sourceElementFactory,
|
javaPropertyInitializerEvaluator, samConversionResolver, sourceElementFactory,
|
||||||
moduleClassResolver, packagePartProvider, supertypeLoopChecker, lookupTracker, module, reflectionTypes,
|
moduleClassResolver, packagePartProvider, supertypeLoopChecker, lookupTracker, module, reflectionTypes,
|
||||||
annotationTypeQualifierResolver, signatureEnhancement, javaClassesTracker, settings
|
annotationTypeQualifierResolver, signatureEnhancement, javaClassesTracker, settings
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,31 +95,27 @@ interface JavaResolverSettings {
|
|||||||
|
|
||||||
private typealias QualifierByApplicabilityType = EnumMap<AnnotationTypeQualifierResolver.QualifierApplicabilityType, NullabilityQualifierWithMigrationStatus?>
|
private typealias QualifierByApplicabilityType = EnumMap<AnnotationTypeQualifierResolver.QualifierApplicabilityType, NullabilityQualifierWithMigrationStatus?>
|
||||||
|
|
||||||
class JavaTypeQualifiersByElementType(
|
class JavaTypeQualifiersByElementType(internal val nullabilityQualifiers: QualifierByApplicabilityType) {
|
||||||
internal val nullabilityQualifiers: QualifierByApplicabilityType
|
operator fun get(applicabilityType: AnnotationTypeQualifierResolver.QualifierApplicabilityType?): JavaTypeQualifiers? {
|
||||||
) {
|
|
||||||
operator fun get(
|
|
||||||
applicabilityType: AnnotationTypeQualifierResolver.QualifierApplicabilityType?
|
|
||||||
): JavaTypeQualifiers? {
|
|
||||||
val nullabilityQualifierWithMigrationStatus = nullabilityQualifiers[applicabilityType] ?: return null
|
val nullabilityQualifierWithMigrationStatus = nullabilityQualifiers[applicabilityType] ?: return null
|
||||||
|
|
||||||
return JavaTypeQualifiers(
|
return JavaTypeQualifiers(
|
||||||
nullabilityQualifierWithMigrationStatus.qualifier, null,
|
nullabilityQualifierWithMigrationStatus.qualifier, null,
|
||||||
isNotNullTypeParameter = false,
|
isNotNullTypeParameter = false,
|
||||||
isNullabilityQualifierForWarning = nullabilityQualifierWithMigrationStatus.isForWarningOnly
|
isNullabilityQualifierForWarning = nullabilityQualifierWithMigrationStatus.isForWarningOnly
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class LazyJavaResolverContext internal constructor(
|
class LazyJavaResolverContext internal constructor(
|
||||||
val components: JavaResolverComponents,
|
val components: JavaResolverComponents,
|
||||||
val typeParameterResolver: TypeParameterResolver,
|
val typeParameterResolver: TypeParameterResolver,
|
||||||
internal val delegateForDefaultTypeQualifiers: Lazy<JavaTypeQualifiersByElementType?>
|
internal val delegateForDefaultTypeQualifiers: Lazy<JavaTypeQualifiersByElementType?>
|
||||||
) {
|
) {
|
||||||
constructor(
|
constructor(
|
||||||
components: JavaResolverComponents,
|
components: JavaResolverComponents,
|
||||||
typeParameterResolver: TypeParameterResolver,
|
typeParameterResolver: TypeParameterResolver,
|
||||||
typeQualifiersComputation: () -> JavaTypeQualifiersByElementType?
|
typeQualifiersComputation: () -> JavaTypeQualifiersByElementType?
|
||||||
) : this(components, typeParameterResolver, lazy(LazyThreadSafetyMode.NONE, typeQualifiersComputation))
|
) : this(components, typeParameterResolver, lazy(LazyThreadSafetyMode.NONE, typeQualifiersComputation))
|
||||||
|
|
||||||
val defaultTypeQualifiers: JavaTypeQualifiersByElementType? by delegateForDefaultTypeQualifiers
|
val defaultTypeQualifiers: JavaTypeQualifiersByElementType? by delegateForDefaultTypeQualifiers
|
||||||
@@ -133,21 +129,21 @@ class LazyJavaResolverContext internal constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun LazyJavaResolverContext.child(
|
fun LazyJavaResolverContext.child(
|
||||||
typeParameterResolver: TypeParameterResolver
|
typeParameterResolver: TypeParameterResolver
|
||||||
) = LazyJavaResolverContext(components, typeParameterResolver, delegateForDefaultTypeQualifiers)
|
) = LazyJavaResolverContext(components, typeParameterResolver, delegateForDefaultTypeQualifiers)
|
||||||
|
|
||||||
fun LazyJavaResolverContext.computeNewDefaultTypeQualifiers(
|
fun LazyJavaResolverContext.computeNewDefaultTypeQualifiers(
|
||||||
additionalAnnotations: Annotations
|
additionalAnnotations: Annotations
|
||||||
): JavaTypeQualifiersByElementType? {
|
): JavaTypeQualifiersByElementType? {
|
||||||
if (components.annotationTypeQualifierResolver.disabled) return defaultTypeQualifiers
|
if (components.annotationTypeQualifierResolver.disabled) return defaultTypeQualifiers
|
||||||
|
|
||||||
val nullabilityQualifiersWithApplicability =
|
val nullabilityQualifiersWithApplicability =
|
||||||
additionalAnnotations.mapNotNull(this::extractDefaultNullabilityQualifier)
|
additionalAnnotations.mapNotNull(this::extractDefaultNullabilityQualifier)
|
||||||
|
|
||||||
if (nullabilityQualifiersWithApplicability.isEmpty()) return defaultTypeQualifiers
|
if (nullabilityQualifiersWithApplicability.isEmpty()) return defaultTypeQualifiers
|
||||||
|
|
||||||
val nullabilityQualifiersByType =
|
val nullabilityQualifiersByType =
|
||||||
defaultTypeQualifiers?.nullabilityQualifiers?.let(::QualifierByApplicabilityType)
|
defaultTypeQualifiers?.nullabilityQualifiers?.let(::QualifierByApplicabilityType)
|
||||||
?: QualifierByApplicabilityType(AnnotationTypeQualifierResolver.QualifierApplicabilityType::class.java)
|
?: QualifierByApplicabilityType(AnnotationTypeQualifierResolver.QualifierApplicabilityType::class.java)
|
||||||
|
|
||||||
var wasUpdate = false
|
var wasUpdate = false
|
||||||
@@ -162,74 +158,74 @@ fun LazyJavaResolverContext.computeNewDefaultTypeQualifiers(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun LazyJavaResolverContext.extractDefaultNullabilityQualifier(
|
private fun LazyJavaResolverContext.extractDefaultNullabilityQualifier(
|
||||||
annotationDescriptor: AnnotationDescriptor
|
annotationDescriptor: AnnotationDescriptor
|
||||||
): NullabilityQualifierWithApplicability? {
|
): NullabilityQualifierWithApplicability? {
|
||||||
val typeQualifierResolver = components.annotationTypeQualifierResolver
|
val typeQualifierResolver = components.annotationTypeQualifierResolver
|
||||||
typeQualifierResolver.resolveQualifierBuiltInDefaultAnnotation(annotationDescriptor)?.let { return it }
|
typeQualifierResolver.resolveQualifierBuiltInDefaultAnnotation(annotationDescriptor)?.let { return it }
|
||||||
|
|
||||||
val (typeQualifier, applicability) =
|
val (typeQualifier, applicability) =
|
||||||
typeQualifierResolver.resolveTypeQualifierDefaultAnnotation(annotationDescriptor)
|
typeQualifierResolver.resolveTypeQualifierDefaultAnnotation(annotationDescriptor)
|
||||||
?: return null
|
?: return null
|
||||||
|
|
||||||
val jsr305State = typeQualifierResolver.resolveJsr305CustomState(annotationDescriptor)
|
val jsr305State = typeQualifierResolver.resolveJsr305CustomState(annotationDescriptor)
|
||||||
?: typeQualifierResolver.resolveJsr305AnnotationState(typeQualifier)
|
?: typeQualifierResolver.resolveJsr305AnnotationState(typeQualifier)
|
||||||
|
|
||||||
if (jsr305State.isIgnore) {
|
if (jsr305State.isIgnore) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
val nullabilityQualifier =
|
val nullabilityQualifier =
|
||||||
components
|
components
|
||||||
.signatureEnhancement
|
.signatureEnhancement
|
||||||
.extractNullability(typeQualifier)
|
.extractNullability(typeQualifier)
|
||||||
?.copy(isForWarningOnly = jsr305State.isWarning)
|
?.copy(isForWarningOnly = jsr305State.isWarning)
|
||||||
?: return null
|
?: return null
|
||||||
|
|
||||||
return NullabilityQualifierWithApplicability(nullabilityQualifier, applicability)
|
return NullabilityQualifierWithApplicability(nullabilityQualifier, applicability)
|
||||||
}
|
}
|
||||||
|
|
||||||
data class NullabilityQualifierWithApplicability(
|
data class NullabilityQualifierWithApplicability(
|
||||||
val nullabilityQualifier: NullabilityQualifierWithMigrationStatus,
|
val nullabilityQualifier: NullabilityQualifierWithMigrationStatus,
|
||||||
val qualifierApplicabilityTypes: Collection<AnnotationTypeQualifierResolver.QualifierApplicabilityType>
|
val qualifierApplicabilityTypes: Collection<AnnotationTypeQualifierResolver.QualifierApplicabilityType>
|
||||||
)
|
)
|
||||||
|
|
||||||
fun LazyJavaResolverContext.replaceComponents(
|
fun LazyJavaResolverContext.replaceComponents(
|
||||||
components: JavaResolverComponents
|
components: JavaResolverComponents
|
||||||
) = LazyJavaResolverContext(components, typeParameterResolver, delegateForDefaultTypeQualifiers)
|
) = LazyJavaResolverContext(components, typeParameterResolver, delegateForDefaultTypeQualifiers)
|
||||||
|
|
||||||
private fun LazyJavaResolverContext.child(
|
private fun LazyJavaResolverContext.child(
|
||||||
containingDeclaration: DeclarationDescriptor,
|
containingDeclaration: DeclarationDescriptor,
|
||||||
typeParameterOwner: JavaTypeParameterListOwner?,
|
typeParameterOwner: JavaTypeParameterListOwner?,
|
||||||
typeParametersIndexOffset: Int = 0,
|
typeParametersIndexOffset: Int = 0,
|
||||||
delegateForTypeQualifiers: Lazy<JavaTypeQualifiersByElementType?>
|
delegateForTypeQualifiers: Lazy<JavaTypeQualifiersByElementType?>
|
||||||
) = LazyJavaResolverContext(
|
) = LazyJavaResolverContext(
|
||||||
components,
|
components,
|
||||||
typeParameterOwner?.let { LazyJavaTypeParameterResolver(this, containingDeclaration, it, typeParametersIndexOffset) }
|
typeParameterOwner?.let { LazyJavaTypeParameterResolver(this, containingDeclaration, it, typeParametersIndexOffset) }
|
||||||
?: typeParameterResolver,
|
?: typeParameterResolver,
|
||||||
delegateForTypeQualifiers
|
delegateForTypeQualifiers
|
||||||
)
|
)
|
||||||
|
|
||||||
fun LazyJavaResolverContext.childForMethod(
|
fun LazyJavaResolverContext.childForMethod(
|
||||||
containingDeclaration: DeclarationDescriptor,
|
containingDeclaration: DeclarationDescriptor,
|
||||||
typeParameterOwner: JavaTypeParameterListOwner,
|
typeParameterOwner: JavaTypeParameterListOwner,
|
||||||
typeParametersIndexOffset: Int = 0
|
typeParametersIndexOffset: Int = 0
|
||||||
) = child(containingDeclaration, typeParameterOwner, typeParametersIndexOffset, delegateForDefaultTypeQualifiers)
|
) = child(containingDeclaration, typeParameterOwner, typeParametersIndexOffset, delegateForDefaultTypeQualifiers)
|
||||||
|
|
||||||
fun LazyJavaResolverContext.childForClassOrPackage(
|
fun LazyJavaResolverContext.childForClassOrPackage(
|
||||||
containingDeclaration: ClassOrPackageFragmentDescriptor,
|
containingDeclaration: ClassOrPackageFragmentDescriptor,
|
||||||
typeParameterOwner: JavaTypeParameterListOwner? = null,
|
typeParameterOwner: JavaTypeParameterListOwner? = null,
|
||||||
typeParametersIndexOffset: Int = 0
|
typeParametersIndexOffset: Int = 0
|
||||||
) = child(
|
) = child(
|
||||||
containingDeclaration, typeParameterOwner, typeParametersIndexOffset,
|
containingDeclaration, typeParameterOwner, typeParametersIndexOffset,
|
||||||
lazy(LazyThreadSafetyMode.NONE) { computeNewDefaultTypeQualifiers(containingDeclaration.annotations) }
|
lazy(LazyThreadSafetyMode.NONE) { computeNewDefaultTypeQualifiers(containingDeclaration.annotations) }
|
||||||
)
|
)
|
||||||
|
|
||||||
fun LazyJavaResolverContext.copyWithNewDefaultTypeQualifiers(
|
fun LazyJavaResolverContext.copyWithNewDefaultTypeQualifiers(
|
||||||
additionalAnnotations: Annotations
|
additionalAnnotations: Annotations
|
||||||
) = if (additionalAnnotations.isEmpty())
|
) = when {
|
||||||
this
|
additionalAnnotations.isEmpty() -> this
|
||||||
else
|
else -> LazyJavaResolverContext(
|
||||||
LazyJavaResolverContext(
|
components, typeParameterResolver,
|
||||||
components, typeParameterResolver,
|
lazy(LazyThreadSafetyMode.NONE) { computeNewDefaultTypeQualifiers(additionalAnnotations) }
|
||||||
lazy(LazyThreadSafetyMode.NONE) { computeNewDefaultTypeQualifiers(additionalAnnotations) }
|
)
|
||||||
)
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user