Partial cleanup of ResolveElementCache

This commit is contained in:
Mikhail Glukhikh
2018-06-19 15:52:38 +03:00
parent 096f9fefd1
commit 40668e3f96
@@ -31,8 +31,6 @@ import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.frontend.di.createContainerForBodyResolve
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.psi.*
import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType
@@ -179,7 +177,8 @@ class ResolveElementCache(
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)
return bindingContext
}
@@ -542,12 +541,12 @@ class ResolveElementCache(
val descriptor = resolveSession.resolveToDescriptor(property) as PropertyDescriptor
ForceResolveUtil.forceResolveAllContents(descriptor)
val bodyResolveContext = BodyResolveContextForLazy(TopDownAnalysisMode.LocalDeclarations, { declaration ->
val bodyResolveContext = BodyResolveContextForLazy(TopDownAnalysisMode.LocalDeclarations) { declaration ->
assert(declaration.parent == property || declaration == property) {
"Must be called only for property accessors or for property, but called for $declaration"
}
resolveSession.declarationScopeProvider.getResolutionScopeForDeclaration(declaration)
})
}
bodyResolver.resolveProperty(bodyResolveContext, property, descriptor)
@@ -696,7 +695,7 @@ class ResolveElementCache(
statementFilter,
file.jvmTarget,
file.languageVersionSettings
).get<BodyResolver>()
).get()
}
// All additional resolve should be done to separate trace