diff options
Diffstat (limited to 'platform/indexing-impl/src')
5 files changed, 32 insertions, 16 deletions
diff --git a/platform/indexing-impl/src/com/intellij/openapi/module/impl/scopes/ModuleWithDependentsScope.java b/platform/indexing-impl/src/com/intellij/openapi/module/impl/scopes/ModuleWithDependentsScope.java index 0a575acdc550..259ea3936934 100644 --- a/platform/indexing-impl/src/com/intellij/openapi/module/impl/scopes/ModuleWithDependentsScope.java +++ b/platform/indexing-impl/src/com/intellij/openapi/module/impl/scopes/ModuleWithDependentsScope.java @@ -50,27 +50,28 @@ class ModuleWithDependentsScope extends GlobalSearchScope { myProjectFileIndex = ProjectRootManager.getInstance(module.getProject()).getFileIndex(); myProjectScope = ProjectScope.getProjectScope(module.getProject()); - myModules = new THashSet<Module>(); - myModules.add(module); - - fillModules(); + myModules = buildDependents(myModule); } - private void fillModules() { - ModuleIndex index = getModuleIndex(myModule.getProject()); + private static Set<Module> buildDependents(Module module) { + Set<Module> result = new THashSet<Module>(); + result.add(module); + + ModuleIndex index = getModuleIndex(module.getProject()); Queue<Module> walkingQueue = new Queue<Module>(10); - walkingQueue.addLast(myModule); + walkingQueue.addLast(module); while (!walkingQueue.isEmpty()) { Module current = walkingQueue.pullFirst(); - myModules.addAll(index.plainUsages.get(current)); + result.addAll(index.plainUsages.get(current)); for (Module dependent : index.exportingUsages.get(current)) { - if (myModules.add(dependent)) { + if (result.add(dependent)) { walkingQueue.addLast(dependent); } } } + return result; } private static class ModuleIndex { diff --git a/platform/indexing-impl/src/com/intellij/psi/impl/cache/CacheManager.java b/platform/indexing-impl/src/com/intellij/psi/impl/cache/CacheManager.java index 54a3bf5ce979..e403f60c8777 100644 --- a/platform/indexing-impl/src/com/intellij/psi/impl/cache/CacheManager.java +++ b/platform/indexing-impl/src/com/intellij/psi/impl/cache/CacheManager.java @@ -20,7 +20,9 @@ import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiFile; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.search.UsageSearchContext; import com.intellij.util.Processor; +import org.intellij.lang.annotations.MagicConstant; import org.jetbrains.annotations.NotNull; public interface CacheManager { @@ -33,7 +35,13 @@ public interface CacheManager { } } - @NotNull PsiFile[] getFilesWithWord(@NotNull String word, short occurenceMask, @NotNull GlobalSearchScope scope, final boolean caseSensitively); - boolean processFilesWithWord(@NotNull Processor<PsiFile> processor,@NotNull String word, short occurenceMask, @NotNull GlobalSearchScope scope, final boolean caseSensitively); + @NotNull + PsiFile[] getFilesWithWord(@NotNull String word, short occurenceMask, @NotNull GlobalSearchScope scope, final boolean caseSensitively); + + boolean processFilesWithWord(@NotNull Processor<PsiFile> processor, + @NotNull String word, + @MagicConstant(flagsFromClass = UsageSearchContext.class) short occurenceMask, + @NotNull GlobalSearchScope scope, + final boolean caseSensitively); } diff --git a/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/BaseFilterLexer.java b/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/BaseFilterLexer.java index cc9dddf396ea..ab774d182cbb 100644 --- a/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/BaseFilterLexer.java +++ b/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/BaseFilterLexer.java @@ -76,7 +76,7 @@ public abstract class BaseFilterLexer extends DelegateLexer implements IdTableBu todoScanningState = new TodoScanningState(patterns, matchers); for (int i = 0; i < patterns.length; ++i) { - Pattern pattern = patterns[i].getPattern(); + Pattern pattern = patterns[i].getOptimizedIndexingPattern(); if (pattern != null) { matchers[i] = pattern.matcher(""); diff --git a/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/BaseFilterLexerUtil.java b/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/BaseFilterLexerUtil.java index 43f6ce4aec93..3896dc380988 100644 --- a/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/BaseFilterLexerUtil.java +++ b/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/BaseFilterLexerUtil.java @@ -17,7 +17,6 @@ package com.intellij.psi.impl.cache.impl; import com.intellij.lexer.Lexer; import com.intellij.openapi.util.Key; -import com.intellij.openapi.vfs.StandardFileSystems; import com.intellij.psi.impl.cache.impl.id.IdIndexEntry; import com.intellij.psi.impl.cache.impl.id.IdTableBuilding; import com.intellij.psi.impl.cache.impl.id.LexerBasedIdIndexer; @@ -40,7 +39,7 @@ public class BaseFilterLexerUtil { return data; } - final boolean needTodo = content.getFile().getFileSystem().getProtocol().equals(StandardFileSystems.FILE_PROTOCOL); + final boolean needTodo = content.getFile().isInLocalFileSystem(); // same as TodoIndex.getFilter().isAcceptable final boolean needIdIndex = IdTableBuilding.getFileTypeIndexer(content.getFileType()) instanceof LexerBasedIdIndexer; final IdDataConsumer consumer = needIdIndex? new IdDataConsumer():null; diff --git a/platform/indexing-impl/src/com/intellij/psi/stubs/StubProcessingHelperBase.java b/platform/indexing-impl/src/com/intellij/psi/stubs/StubProcessingHelperBase.java index a97ae21b1d81..83bd87271fc4 100644 --- a/platform/indexing-impl/src/com/intellij/psi/stubs/StubProcessingHelperBase.java +++ b/platform/indexing-impl/src/com/intellij/psi/stubs/StubProcessingHelperBase.java @@ -32,11 +32,19 @@ public abstract class StubProcessingHelperBase { return stub.getStubType(); } - public <Psi extends PsiElement> boolean processStubsInFile(final Project project, final VirtualFile file, StubIdList value, final Processor<? super Psi> processor, Class<Psi> requiredClass) { + public <Psi extends PsiElement> boolean processStubsInFile(@NotNull final Project project, + @NotNull final VirtualFile file, + @NotNull StubIdList value, + @NotNull final Processor<? super Psi> processor, + @NotNull Class<Psi> requiredClass) { return processStubsInFile(project, file, value, processor, requiredClass, false); } - public <Psi extends PsiElement> boolean processStubsInFile(final Project project, final VirtualFile file, StubIdList value, final Processor<? super Psi> processor, Class<Psi> requiredClass, final boolean skipOnErrors) { + public <Psi extends PsiElement> boolean processStubsInFile(@NotNull final Project project, + @NotNull final VirtualFile file, + @NotNull StubIdList value, + @NotNull final Processor<? super Psi> processor, + @NotNull Class<Psi> requiredClass, final boolean skipOnErrors) { StubTree stubTree = null; PsiFile candidatePsiFile = PsiManager.getInstance(project).findFile(file); |