From 3634cbe3cb6a8c6453948ad76a1b45906c8fed86 Mon Sep 17 00:00:00 2001 From: Vladimir Ilmov Date: Fri, 5 Jun 2020 01:35:41 +0200 Subject: [PATCH] (LightClasses) resolve of annotations fast-path --- .../kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt | 2 ++ .../jetbrains/kotlin/asJava/LightClassGenerationSupport.kt | 3 +++ .../idea/caches/resolve/IDELightClassGenerationSupport.kt | 4 +++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt index c45c1d6912f..c999e24f9ac 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt @@ -86,5 +86,7 @@ class CliLightClassGenerationSupport(private val traceHolder: CliTraceHolder) : override fun analyze(element: KtElement) = traceHolder.bindingContext + override fun analyzeAnnotation(element: KtAnnotationEntry) = traceHolder.bindingContext.get(BindingContext.ANNOTATION, element) + override fun analyzeWithContent(element: KtClassOrObject) = traceHolder.bindingContext } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassGenerationSupport.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassGenerationSupport.kt index 532b798df52..e7770593fc7 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassGenerationSupport.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassGenerationSupport.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.asJava.builder.LightClassConstructionContext import org.jetbrains.kotlin.asJava.builder.LightClassDataHolder import org.jetbrains.kotlin.asJava.classes.* import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.BindingContext @@ -42,6 +43,8 @@ abstract class LightClassGenerationSupport { abstract fun analyze(element: KtElement): BindingContext + abstract fun analyzeAnnotation(element: KtAnnotationEntry): AnnotationDescriptor? + abstract fun analyzeWithContent(element: KtClassOrObject): BindingContext abstract fun createUltraLightClass(element: KtClassOrObject): KtUltraLightClass? diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt index 5c3ac1901ac..d839df3456e 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt @@ -66,7 +66,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG it.shortName == fqName.shortName() || owner.containingKtFile.hasAlias(it.shortName) } for (entry in candidates) { - val descriptor = analyze(entry).get(BindingContext.ANNOTATION, entry) + val descriptor = analyzeAnnotation(entry) if (descriptor?.fqName == fqName) { return Pair(entry, descriptor) } @@ -218,5 +218,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG override fun analyze(element: KtElement) = element.analyze(BodyResolveMode.PARTIAL) + override fun analyzeAnnotation(element: KtAnnotationEntry): AnnotationDescriptor? = element.resolveToDescriptorIfAny() + override fun analyzeWithContent(element: KtClassOrObject) = element.analyzeWithContent() } \ No newline at end of file