(ResolveElementCache) KtAnnotationEntry resolveToDescriptor added
This commit is contained in:
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.idea.caches.resolve
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
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(
|
fun KtClassOrObject.resolveToDescriptorIfAny(
|
||||||
resolutionFacade: ResolutionFacade,
|
resolutionFacade: ResolutionFacade,
|
||||||
bodyResolveMode: BodyResolveMode = BodyResolveMode.PARTIAL
|
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.caches.resolve.KotlinCacheService
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
@@ -92,6 +93,10 @@ fun KtFile.resolveImportReference(fqName: FqName): Collection<DeclarationDescrip
|
|||||||
return facade.resolveImportReference(facade.moduleDescriptor, fqName)
|
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 and next functions are used for 'normal' element analysis
|
||||||
// This analysis *should* provide all information extractable from this KtElement except:
|
// This analysis *should* provide all information extractable from this KtElement except:
|
||||||
|
|||||||
Reference in New Issue
Block a user