Implement caching module annotations per class id
This commit is contained in:
+1
-1
@@ -9,5 +9,5 @@ import org.jetbrains.kotlin.load.java.structure.JavaAnnotation
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
interface JavaModuleAnnotationsProvider {
|
||||
fun getModuleAnnotations(classId: ClassId): List<JavaAnnotation>?
|
||||
fun getAnnotationsForModuleOwnerOfClass(classId: ClassId): List<JavaAnnotation>?
|
||||
}
|
||||
|
||||
+5
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.load.java.toDescriptorVisibility
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.isValidJavaFqName
|
||||
import org.jetbrains.kotlin.resolve.constants.StringValue
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.classId
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.resolveTopLevelClass
|
||||
@@ -67,6 +68,10 @@ class LazyJavaClassDescriptor(
|
||||
}
|
||||
}
|
||||
|
||||
val moduleAnnotations by lazy {
|
||||
classId?.let { outerContext.components.javaModuleResolver.getAnnotationsForModuleOwnerOfClass(it) }
|
||||
}
|
||||
|
||||
private val kind = when {
|
||||
jClass.isAnnotationType -> ClassKind.ANNOTATION_CLASS
|
||||
jClass.isInterface -> ClassKind.INTERFACE
|
||||
|
||||
+2
-2
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.load.java.descriptors.*
|
||||
import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext
|
||||
import org.jetbrains.kotlin.load.java.lazy.copyWithNewDefaultTypeQualifiers
|
||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaAnnotationDescriptor
|
||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaClassDescriptor
|
||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaTypeParameterDescriptor
|
||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.isJavaField
|
||||
import org.jetbrains.kotlin.load.kotlin.SignatureBuildingComponents
|
||||
@@ -150,8 +151,7 @@ class SignatureEnhancement(
|
||||
|
||||
private fun <D : CallableMemberDescriptor> D.getDefaultAnnotations(c: LazyJavaResolverContext): Annotations {
|
||||
val topLevelClassifier = getTopLevelContainingClassifier() ?: return annotations
|
||||
val classId = topLevelClassifier.classId ?: return annotations
|
||||
val moduleAnnotations = c.components.javaModuleResolver.getModuleAnnotations(classId)
|
||||
val moduleAnnotations = (topLevelClassifier as? LazyJavaClassDescriptor)?.moduleAnnotations
|
||||
|
||||
if (moduleAnnotations.isNullOrEmpty()) return annotations
|
||||
|
||||
|
||||
+1
-1
@@ -123,7 +123,7 @@ fun makeLazyJavaPackageFragmentFromClassLoaderProvider(
|
||||
SignatureEnhancement(annotationTypeQualifierResolver, JavaTypeEnhancementState.DISABLED_JSR_305, JavaTypeEnhancement(JavaResolverSettings.Default)),
|
||||
JavaClassesTracker.Default, JavaResolverSettings.Default, NewKotlinTypeChecker.Default, javaTypeEnhancementState,
|
||||
object : JavaModuleAnnotationsProvider {
|
||||
override fun getModuleAnnotations(classId: ClassId): List<JavaAnnotation>? = null
|
||||
override fun getAnnotationsForModuleOwnerOfClass(classId: ClassId): List<JavaAnnotation>? = null
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user