From 7f56c815fb90de99a5ad54009c5f3c2f50022d89 Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Fri, 14 Nov 2014 13:59:34 +0300 Subject: [PATCH] Debugger: add module info to key for type mapper in JetPositionManager --- .../plugin/debugger/JetPositionManager.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java b/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java index 47ff11bc0bb..73e65ae9b09 100644 --- a/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java +++ b/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java @@ -27,6 +27,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.libraries.LibraryUtil; +import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; @@ -56,6 +57,7 @@ import org.jetbrains.jet.lang.resolve.kotlin.PackagePartClassUtils; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.types.lang.InlineStrategy; import org.jetbrains.jet.lang.types.lang.InlineUtil; +import org.jetbrains.jet.plugin.caches.resolve.IdeaModuleInfo; import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage; import org.jetbrains.jet.plugin.codeInsight.CodeInsightUtils; import org.jetbrains.jet.plugin.project.ResolveSessionForBodies; @@ -69,7 +71,7 @@ import static org.jetbrains.jet.plugin.stubindex.PackageIndexUtil.findFilesWithE public class JetPositionManager implements PositionManager { private final DebugProcess myDebugProcess; - private final WeakHashMap> myTypeMappers = new WeakHashMap>(); + private final WeakHashMap, CachedValue> myTypeMappers = new WeakHashMap, CachedValue>(); public JetPositionManager(DebugProcess debugProcess) { myDebugProcess = debugProcess; @@ -312,15 +314,16 @@ public class JetPositionManager implements PositionManager { } private JetTypeMapper prepareTypeMapper(final JetFile file) { - final FqName fqName = file.getPackageFqName(); - CachedValue value = myTypeMappers.get(fqName); + final Pair key = createKeyForTypeMapper(file); + + CachedValue value = myTypeMappers.get(key); if(value == null) { value = CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider() { @Override public Result compute() { Project project = file.getProject(); - GlobalSearchScope packageFacadeScope = ResolvePackage.getModuleInfo(file).contentScope(); - Collection packageFiles = findFilesWithExactPackage(fqName, packageFacadeScope, project); + GlobalSearchScope packageFacadeScope = key.second.contentScope(); + Collection packageFiles = findFilesWithExactPackage(key.first, packageFacadeScope, project); AnalyzeExhaust analyzeExhaust = ResolvePackage.getAnalysisResultsForElements(packageFiles); analyzeExhaust.throwIfError(); @@ -333,7 +336,8 @@ public class JetPositionManager implements PositionManager { return new Result(state.getTypeMapper(), PsiModificationTracker.MODIFICATION_COUNT); } }, false); - myTypeMappers.put(fqName, value); + + myTypeMappers.put(key, value); } return value.getValue(); @@ -373,14 +377,15 @@ public class JetPositionManager implements PositionManager { @TestOnly public void addTypeMapper(JetFile file, final JetTypeMapper typeMapper) { - FqName fqName = file.getPackageFqName(); CachedValue value = CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider() { @Override public Result compute() { return new Result(typeMapper, PsiModificationTracker.MODIFICATION_COUNT); } }, false); - myTypeMappers.put(fqName, value); + + Pair key = createKeyForTypeMapper(file); + myTypeMappers.put(key, value); } @@ -428,4 +433,8 @@ public class JetPositionManager implements PositionManager { return false; } + private static Pair createKeyForTypeMapper(@NotNull JetFile file) { + return new Pair(file.getPackageFqName(), ResolvePackage.getModuleInfo(file)); + } + }