Force resolution of file annotations before element analysis
^KT-37219 In Progress
This commit is contained in:
@@ -238,11 +238,14 @@ class ResolveElementCache(
|
||||
}
|
||||
|
||||
fun resolveToElements(elements: Collection<KtElement>, bodyResolveMode: BodyResolveMode = BodyResolveMode.FULL): BindingContext {
|
||||
val elementsByAdditionalResolveElement: Map<KtElement?, List<KtElement>> = elements.groupBy { findElementOfAdditionalResolve(it, bodyResolveMode) }
|
||||
val elementsByAdditionalResolveElement: Map<KtElement?, List<KtElement>> =
|
||||
elements.groupBy { findElementOfAdditionalResolve(it, bodyResolveMode) }
|
||||
|
||||
val bindingContexts = ArrayList<BindingContext>()
|
||||
val declarationsToResolve = ArrayList<KtDeclaration>()
|
||||
var addResolveSessionBindingContext = false
|
||||
|
||||
ensureFileAnnotationsResolved(elements)
|
||||
for ((elementOfAdditionalResolve, contextElements) in elementsByAdditionalResolveElement) {
|
||||
if (elementOfAdditionalResolve != null) {
|
||||
if (elementOfAdditionalResolve is KtParameter) {
|
||||
@@ -272,6 +275,14 @@ class ResolveElementCache(
|
||||
return CompositeBindingContext.create(bindingContexts)
|
||||
}
|
||||
|
||||
private fun ensureFileAnnotationsResolved(elements: Collection<KtElement>) {
|
||||
val filesToBeAnalyzed = elements.map { it.containingKtFile }.toSet()
|
||||
for (file in filesToBeAnalyzed) {
|
||||
val fileLevelAnnotations = resolveSession.getFileAnnotations(file)
|
||||
doResolveAnnotations(fileLevelAnnotations)
|
||||
}
|
||||
}
|
||||
|
||||
private fun findElementOfAdditionalResolve(element: KtElement, bodyResolveMode: BodyResolveMode): KtElement? {
|
||||
if (element is KtAnnotationEntry && bodyResolveMode == BodyResolveMode.PARTIAL_NO_ADDITIONAL)
|
||||
return element
|
||||
|
||||
Reference in New Issue
Block a user