(ResolveElementCache) KtAnnotationEntry resolveToDescriptor added

This commit is contained in:
Vladimir Ilmov
2020-06-03 16:17:53 +02:00
parent c5aa35e016
commit 47c25982b6
2 changed files with 15 additions and 0 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.idea.caches.resolve
import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.BindingContext
@@ -43,6 +44,15 @@ fun KtDeclaration.resolveToDescriptorIfAny(
}
}
fun KtAnnotationEntry.resolveToDescriptorIfAny(
resolutionFacade: ResolutionFacade,
bodyResolveMode: BodyResolveMode = BodyResolveMode.PARTIAL
): AnnotationDescriptor? {
//TODO: BodyResolveMode.PARTIAL is not quite safe!
val context = analyze(resolutionFacade, bodyResolveMode)
return context.get(BindingContext.ANNOTATION, this)
}
fun KtClassOrObject.resolveToDescriptorIfAny(
resolutionFacade: ResolutionFacade,
bodyResolveMode: BodyResolveMode = BodyResolveMode.PARTIAL
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.*
@@ -92,6 +93,10 @@ fun KtFile.resolveImportReference(fqName: FqName): Collection<DeclarationDescrip
return facade.resolveImportReference(facade.moduleDescriptor, fqName)
}
fun KtAnnotationEntry.resolveToDescriptorIfAny(
bodyResolveMode: BodyResolveMode = BodyResolveMode.PARTIAL
): AnnotationDescriptor? =
resolveToDescriptorIfAny(getResolutionFacade(), bodyResolveMode)
// This and next functions are used for 'normal' element analysis
// This analysis *should* provide all information extractable from this KtElement except: