From 6494a2d9024bfdd31c3f68e95d39b9fc8a654b8c Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Mon, 13 Apr 2020 12:03:17 +0000 Subject: [PATCH] Invalidate ResolveElementCache on project roots change #KT-38206 Fixed #EA-221073 Fixed --- .../jetbrains/kotlin/idea/project/ResolveElementCache.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 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 98fa5f5629c..bf3b74fd136 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 @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.idea.project import com.intellij.openapi.project.Project +import com.intellij.openapi.roots.ProjectRootModificationTracker import com.intellij.psi.util.CachedValue import com.intellij.psi.util.CachedValueProvider import com.intellij.psi.util.CachedValuesManager @@ -71,7 +72,8 @@ class ResolveElementCache( CachedValueProvider.Result.create( ContainerUtil.createConcurrentWeakKeySoftValueMap(), KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker, - resolveSession.exceptionTracker + resolveSession.exceptionTracker, + rootsChangedTracker ) }, false @@ -110,12 +112,15 @@ class ResolveElementCache( CachedValueProvider.Result.create( slruCache, KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker, - resolveSession.exceptionTracker + resolveSession.exceptionTracker, + rootsChangedTracker ) }, false ) + private val rootsChangedTracker = ProjectRootModificationTracker.getInstance(project) + override fun resolveFunctionBody(function: KtNamedFunction) = getElementsAdditionalResolve(function, null, BodyResolveMode.FULL) fun resolvePrimaryConstructorParametersDefaultValues(ktClass: KtClass): BindingContext {