From 315a73fd12e00c080fc36170456ecc34db267223 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 23 Jul 2015 20:53:48 +0300 Subject: [PATCH] Minor optimization: don't walk through parent directories --- .../kotlin/idea/caches/resolve/KotlinResolveCache.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinResolveCache.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinResolveCache.kt index 5e34d92538a..579f88952fa 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinResolveCache.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinResolveCache.kt @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.frontend.di.createContainerForLazyBodyResolve import org.jetbrains.kotlin.idea.project.ResolveSessionForBodies import org.jetbrains.kotlin.idea.project.TargetPlatformDetector import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.resolve.util.getScopeAndDataFlowForAnalyzeFragment @@ -113,9 +114,8 @@ private class PerFileAnalysisCache(val file: JetFile, val resolveSession: Resolv val descendantsOfCurrent = arrayListOf() val toRemove = hashSetOf() - var current: PsiElement? = analyzableElement var result: AnalysisResult? = null - while (current != null) { + for (current in analyzableElement.parentsWithSelf) { val cached = cache[current] if (cached != null) { result = cached @@ -124,7 +124,6 @@ private class PerFileAnalysisCache(val file: JetFile, val resolveSession: Resolv } descendantsOfCurrent.add(current) - current = current.getParent() } cache.keySet().removeAll(toRemove)