From 8d1499197e507d707931700c19f680fbc32d7424 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 14 Jul 2015 12:44:27 +0300 Subject: [PATCH] Fixed partial resolve caching to cache only for statements that are guaranteed to be processed --- .../jetbrains/kotlin/idea/project/ResolveElementCache.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ResolveElementCache.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ResolveElementCache.kt index e8e0fb98c39..34c7f007228 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ResolveElementCache.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ResolveElementCache.kt @@ -66,9 +66,11 @@ public class ResolveElementCache(resolveSession: ResolveSession, private val pro val (bindingContext, statementFilter) = performElementAdditionalResolve(resolveElement, contextElement, BodyResolveMode.PARTIAL) - for (statement in (statementFilter as PartialBodyResolveFilter).allStatementsToResolve) { - if (!map.containsKey(statement)) { - map[statement] = bindingContext + if (statementFilter is PartialBodyResolveFilter) { + for (statement in statementFilter.allStatementsToResolve) { + if (!map.containsKey(statement) && bindingContext[BindingContext.PROCESSED, statement] == true) { + map[statement] = bindingContext + } } } map[resolveElement] = bindingContext // we use the whole declaration key in the map to obtain resolve not inside any block (e.g. default parameter values)