From d593f50d6540baa17efc71ee5a7928f96a06e382 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Thu, 6 Oct 2016 15:11:02 +0300 Subject: [PATCH 1/1] properly cache result for different adapters in CompilerReferenceServiceImpl (IDEA-CR-14113) --- .../CompilerReferenceServiceImpl.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/CompilerReferenceServiceImpl.java b/java/compiler/impl/src/com/intellij/compiler/CompilerReferenceServiceImpl.java index fcb121d18861..997d5b18f410 100644 --- a/java/compiler/impl/src/com/intellij/compiler/CompilerReferenceServiceImpl.java +++ b/java/compiler/impl/src/com/intellij/compiler/CompilerReferenceServiceImpl.java @@ -27,7 +27,11 @@ import com.intellij.openapi.vfs.*; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.psi.util.*; +import com.intellij.psi.util.CachedValueProvider; +import com.intellij.psi.util.CachedValuesManager; +import com.intellij.psi.util.ParameterizedCachedValue; +import com.intellij.psi.util.PsiModificationTracker; +import com.intellij.util.containers.ConcurrentFactoryMap; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.indexing.FileBasedIndex; import gnu.trove.THashSet; @@ -143,19 +147,15 @@ public class CompilerReferenceServiceImpl extends CompilerReferenceService { public GlobalSearchScope getScopeWithoutCodeReferences(@NotNull PsiElement element, @NotNull CompilerSearchAdapter adapter) { if (!isServiceEnabled()) return null; - final ParameterizedCachedValueProvider cachedValueProvider = - new ParameterizedCachedValueProvider() { - @Nullable - @Override - public CachedValueProvider.Result compute(CompilerSearchAdapter param) { - return CachedValueProvider.Result.create(calculateScopeWithoutReferences(element, param), PsiModificationTracker.MODIFICATION_COUNT); - } - }; - return CachedValuesManager.getManager(myProject).getParameterizedCachedValue(element, - CACHE_KEY, - cachedValueProvider, - false, - adapter); + return CachedValuesManager.getCachedValue(element, + () -> CachedValueProvider.Result.create(new ConcurrentFactoryMap() { + @Nullable + @Override + protected GlobalSearchScope create(CompilerSearchAdapter key) { + return calculateScopeWithoutReferences(element, key); + } + }, + PsiModificationTracker.MODIFICATION_COUNT)).get(adapter); } private boolean isServiceEnabled() { -- 2.32.0