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.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