Partial cleanup of ResolveElementCache
This commit is contained in:
@@ -31,8 +31,6 @@ import org.jetbrains.kotlin.descriptors.*
|
|||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.frontend.di.createContainerForBodyResolve
|
import org.jetbrains.kotlin.frontend.di.createContainerForBodyResolve
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.CodeFragmentAnalyzer
|
import org.jetbrains.kotlin.idea.caches.resolve.CodeFragmentAnalyzer
|
||||||
import org.jetbrains.kotlin.idea.stubindex.KotlinProbablyNothingFunctionShortNameIndex
|
|
||||||
import org.jetbrains.kotlin.idea.stubindex.KotlinProbablyNothingPropertyShortNameIndex
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType
|
import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType
|
||||||
@@ -179,7 +177,8 @@ class ResolveElementCache(
|
|||||||
|
|
||||||
val (bindingContext, statementFilter) = performElementAdditionalResolve(resolveElement, contextElements, bodyResolveMode)
|
val (bindingContext, statementFilter) = performElementAdditionalResolve(resolveElement, contextElements, bodyResolveMode)
|
||||||
|
|
||||||
if (statementFilter == StatementFilter.NONE) { // partial resolve is not supported for the given declaration - full resolve performed instead
|
if (statementFilter == StatementFilter.NONE) {
|
||||||
|
// partial resolve is not supported for the given declaration - full resolve performed instead
|
||||||
fullResolveMap[resolveElement] = CachedFullResolve(bindingContext, resolveElement)
|
fullResolveMap[resolveElement] = CachedFullResolve(bindingContext, resolveElement)
|
||||||
return bindingContext
|
return bindingContext
|
||||||
}
|
}
|
||||||
@@ -542,12 +541,12 @@ class ResolveElementCache(
|
|||||||
val descriptor = resolveSession.resolveToDescriptor(property) as PropertyDescriptor
|
val descriptor = resolveSession.resolveToDescriptor(property) as PropertyDescriptor
|
||||||
ForceResolveUtil.forceResolveAllContents(descriptor)
|
ForceResolveUtil.forceResolveAllContents(descriptor)
|
||||||
|
|
||||||
val bodyResolveContext = BodyResolveContextForLazy(TopDownAnalysisMode.LocalDeclarations, { declaration ->
|
val bodyResolveContext = BodyResolveContextForLazy(TopDownAnalysisMode.LocalDeclarations) { declaration ->
|
||||||
assert(declaration.parent == property || declaration == property) {
|
assert(declaration.parent == property || declaration == property) {
|
||||||
"Must be called only for property accessors or for property, but called for $declaration"
|
"Must be called only for property accessors or for property, but called for $declaration"
|
||||||
}
|
}
|
||||||
resolveSession.declarationScopeProvider.getResolutionScopeForDeclaration(declaration)
|
resolveSession.declarationScopeProvider.getResolutionScopeForDeclaration(declaration)
|
||||||
})
|
}
|
||||||
|
|
||||||
bodyResolver.resolveProperty(bodyResolveContext, property, descriptor)
|
bodyResolver.resolveProperty(bodyResolveContext, property, descriptor)
|
||||||
|
|
||||||
@@ -696,7 +695,7 @@ class ResolveElementCache(
|
|||||||
statementFilter,
|
statementFilter,
|
||||||
file.jvmTarget,
|
file.jvmTarget,
|
||||||
file.languageVersionSettings
|
file.languageVersionSettings
|
||||||
).get<BodyResolver>()
|
).get()
|
||||||
}
|
}
|
||||||
|
|
||||||
// All additional resolve should be done to separate trace
|
// All additional resolve should be done to separate trace
|
||||||
|
|||||||
Reference in New Issue
Block a user