(LightClasses) resolve of annotations fast-path
This commit is contained in:
+2
@@ -86,5 +86,7 @@ class CliLightClassGenerationSupport(private val traceHolder: CliTraceHolder) :
|
|||||||
|
|
||||||
override fun analyze(element: KtElement) = traceHolder.bindingContext
|
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
|
override fun analyzeWithContent(element: KtClassOrObject) = traceHolder.bindingContext
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.asJava.builder.LightClassConstructionContext
|
|||||||
import org.jetbrains.kotlin.asJava.builder.LightClassDataHolder
|
import org.jetbrains.kotlin.asJava.builder.LightClassDataHolder
|
||||||
import org.jetbrains.kotlin.asJava.classes.*
|
import org.jetbrains.kotlin.asJava.classes.*
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
@@ -42,6 +43,8 @@ abstract class LightClassGenerationSupport {
|
|||||||
|
|
||||||
abstract fun analyze(element: KtElement): BindingContext
|
abstract fun analyze(element: KtElement): BindingContext
|
||||||
|
|
||||||
|
abstract fun analyzeAnnotation(element: KtAnnotationEntry): AnnotationDescriptor?
|
||||||
|
|
||||||
abstract fun analyzeWithContent(element: KtClassOrObject): BindingContext
|
abstract fun analyzeWithContent(element: KtClassOrObject): BindingContext
|
||||||
|
|
||||||
abstract fun createUltraLightClass(element: KtClassOrObject): KtUltraLightClass?
|
abstract fun createUltraLightClass(element: KtClassOrObject): KtUltraLightClass?
|
||||||
|
|||||||
+3
-1
@@ -66,7 +66,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
|
|||||||
it.shortName == fqName.shortName() || owner.containingKtFile.hasAlias(it.shortName)
|
it.shortName == fqName.shortName() || owner.containingKtFile.hasAlias(it.shortName)
|
||||||
}
|
}
|
||||||
for (entry in candidates) {
|
for (entry in candidates) {
|
||||||
val descriptor = analyze(entry).get(BindingContext.ANNOTATION, entry)
|
val descriptor = analyzeAnnotation(entry)
|
||||||
if (descriptor?.fqName == fqName) {
|
if (descriptor?.fqName == fqName) {
|
||||||
return Pair(entry, descriptor)
|
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 analyze(element: KtElement) = element.analyze(BodyResolveMode.PARTIAL)
|
||||||
|
|
||||||
|
override fun analyzeAnnotation(element: KtAnnotationEntry): AnnotationDescriptor? = element.resolveToDescriptorIfAny()
|
||||||
|
|
||||||
override fun analyzeWithContent(element: KtClassOrObject) = element.analyzeWithContent()
|
override fun analyzeWithContent(element: KtClassOrObject) = element.analyzeWithContent()
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user