From 51f8fd98ba99ffdf8c483273854299d8b72deb59 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 24 Mar 2011 19:52:41 +0300 Subject: [PATCH] Fix searching for usages outside of roots model (namely in objective-c frameworks). --- .../intellij/psi/impl/cache/impl/IndexCacheManagerImpl.java | 3 ++- .../src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/IndexCacheManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/IndexCacheManagerImpl.java index 52c2ca83c492..58c8201cdb57 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/IndexCacheManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/IndexCacheManagerImpl.java @@ -111,12 +111,13 @@ public class IndexCacheManagerImpl implements CacheManager{ if (vFiles.isEmpty()) return true; final ProjectFileIndex index = ProjectRootManager.getInstance(myProject).getFileIndex(); + final boolean globalScope = scope.isSearchOutsideRootModel(); final Processor virtualFileProcessor = new ReadActionProcessor() { @Override public boolean processInReadAction(VirtualFile virtualFile) { LOG.assertTrue(virtualFile.isValid()); - if (virtualFile.isValid() && scope.contains(virtualFile) && shouldBeFound(virtualFile, index)) { + if (virtualFile.isValid() && scope.contains(virtualFile) && (globalScope || shouldBeFound(virtualFile, index))) { final PsiFile psiFile = myPsiManager.findFile(virtualFile); return psiFile == null || psiFileProcessor.process(psiFile); } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java index 1c2aaf448b61..b6d1302fb081 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java @@ -674,13 +674,14 @@ public class PsiSearchHelperImpl implements PsiSearchHelper { final GlobalSearchScope commonScope, final ProgressIndicator progress) { final MultiMap local = createMultiMap(); + final boolean inRootsOnly = !commonScope.isSearchOutsideRootModel(); ApplicationManager.getApplication().runReadAction(new Runnable() { public void run() { if (progress != null) progress.checkCanceled(); FileBasedIndex.getInstance().processValues(IdIndex.NAME, entry, null, new FileBasedIndex.ValueProcessor() { public boolean process(VirtualFile file, Integer value) { if (progress != null) progress.checkCanceled(); - if (!IndexCacheManagerImpl.shouldBeFound(file, index)) { + if (inRootsOnly && !IndexCacheManagerImpl.shouldBeFound(file, index)) { return true; } int mask = value.intValue();