move scope constructors to GlobalSearchScopes

This commit is contained in:
Dmitry Jemerov
2011-08-19 20:48:48 +04:00
parent d4e8398069
commit 62a68d49fa
19 changed files with 341 additions and 297 deletions
@@ -19,7 +19,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.ex.temp.TempFileSystem;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.util.indexing.*;
import com.intellij.util.io.DataExternalizer;
import org.intellij.images.fileTypes.ImageFileTypeManager;
@@ -71,7 +71,8 @@ public class ImageInfoIndex extends SingleEntryFileBasedIndexExtension<ImageInfo
}
public static void processValues(VirtualFile virtualFile, FileBasedIndex.ValueProcessor<ImageInfo> processor, Project project) {
FileBasedIndex.getInstance().processValues(INDEX_ID, Math.abs(FileBasedIndex.getFileId(virtualFile)), virtualFile, processor, GlobalSearchScope.fileScope(project, virtualFile));
FileBasedIndex.getInstance().processValues(INDEX_ID, Math.abs(FileBasedIndex.getFileId(virtualFile)), virtualFile, processor, GlobalSearchScopes
.fileScope(project, virtualFile));
}
public DataExternalizer<ImageInfo> getValueExternalizer() {
@@ -60,6 +60,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiClass;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.util.Chunk;
import com.intellij.util.cls.ClsFormatException;
import gnu.trove.THashMap;
@@ -584,7 +585,8 @@ public class BackendCompilerWrapper {
final String packagePrefix, final List<File> filesToRefresh, final Map<String, Collection<TranslatingCompiler.OutputItem>> results) throws CacheCorruptedException {
final Ref<CacheCorruptedException> exRef = new Ref<CacheCorruptedException>(null);
final ModuleFileIndex fileIndex = ModuleRootManager.getInstance(module).getFileIndex();
final GlobalSearchScope srcRootScope = GlobalSearchScope.moduleScope(module).intersectWith(GlobalSearchScope.directoryScope(myProject, sourceRoot, true));
final GlobalSearchScope srcRootScope = GlobalSearchScope.moduleScope(module).intersectWith(
GlobalSearchScopes.directoryScope(myProject, sourceRoot, true));
final ContentIterator contentIterator = new ContentIterator() {
public boolean processFile(final VirtualFile child) {
@@ -48,6 +48,7 @@ import com.intellij.psi.PsiCompiledElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiRecursiveElementVisitor;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.psi.search.scope.packageSet.NamedScope;
import com.intellij.psi.search.scope.packageSet.PackageSetFactory;
import com.intellij.psi.search.scope.packageSet.ParsingException;
@@ -94,7 +95,7 @@ public class UnusedLibrariesInspection extends DescriptorProviderInspection {
GlobalSearchScope searchScope;
try {
@NonNls final String libsName = "libs";
searchScope = GlobalSearchScope.filterScope(project, new NamedScope(libsName, PackageSetFactory.getInstance().compile("lib:*..*")));
searchScope = GlobalSearchScopes.filterScope(project, new NamedScope(libsName, PackageSetFactory.getInstance().compile("lib:*..*")));
}
catch (ParsingException e) {
//can't be
@@ -28,6 +28,7 @@ import com.intellij.psi.PsiElementFactory;
import com.intellij.psi.PsiPackageStatement;
import com.intellij.psi.impl.java.stubs.JavaStubElementTypes;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.util.IncorrectOperationException;
import com.intellij.testFramework.LightVirtualFile;
import org.jetbrains.annotations.NotNull;
@@ -52,7 +53,7 @@ public class PsiJavaFileImpl extends PsiJavaFileBaseImpl {
if (file != null && !(file instanceof LightVirtualFile)) {
final ProjectFileIndex index = ProjectRootManager.getInstance(getProject()).getFileIndex();
if (!index.isInSource(file) && !index.isInLibraryClasses(file)) {
return GlobalSearchScope.fileScope(this);
return GlobalSearchScopes.fileScope(this);
}
}
return super.getResolveScope();
@@ -31,7 +31,7 @@ import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Disposer;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
@@ -145,7 +145,7 @@ public class TypeMigrationDialog extends RefactoringDialog {
if (VisibilityUtil.compare(VisibilityUtil.getVisibilityModifier(modifierList), PsiModifier.PRIVATE) < 0) return null;
}
for (PsiReference reference : ReferencesSearch.search(root, GlobalSearchScope.fileScope(root.getContainingFile()))) {
for (PsiReference reference : ReferencesSearch.search(root, GlobalSearchScopes.fileScope(root.getContainingFile()))) {
final PsiElement element = reference.getElement();
final PsiExpression expr = PsiTreeUtil.getParentOfType(element, PsiExpression.class, false);
if (expr != null) {
@@ -38,6 +38,7 @@ import com.intellij.openapi.vfs.VirtualFileFilter;
import com.intellij.profile.ProjectProfileManager;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.psi.search.LocalSearchScope;
import com.intellij.psi.search.SearchScope;
import com.intellij.util.ArrayUtil;
@@ -637,14 +638,14 @@ public class AnalysisScope {
case CUSTOM:
return myScope;
case DIRECTORY:
return GlobalSearchScope.directoryScope((PsiDirectory)myElement, true);
return GlobalSearchScopes.directoryScope((PsiDirectory)myElement, true);
case FILE:
return new LocalSearchScope(myElement);
case INVALID:
return LocalSearchScope.EMPTY;
case MODULE:
GlobalSearchScope moduleScope = GlobalSearchScope.moduleScope(myModule);
return myIncludeTestSource ? moduleScope : GlobalSearchScope.notScope(GlobalSearchScope.projectTestScope(myModule.getProject())).intersectWith(moduleScope);
return myIncludeTestSource ? moduleScope : GlobalSearchScope.notScope(GlobalSearchScopes.projectTestScope(myModule.getProject())).intersectWith(moduleScope);
case MODULES:
SearchScope scope = GlobalSearchScope.EMPTY_SCOPE;
for (Module module : myModules) {
@@ -652,7 +653,7 @@ public class AnalysisScope {
}
return scope;
case PROJECT:
return myIncludeTestSource ? GlobalSearchScope.projectScope(myProject) : GlobalSearchScope.projectProductionScope(myProject);
return myIncludeTestSource ? GlobalSearchScope.projectScope(myProject) : GlobalSearchScopes.projectProductionScope(myProject);
case VIRTUAL_FILES:
return new GlobalSearchScope() {
@Override
@@ -20,21 +20,15 @@ import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.search.scope.packageSet.*;
import com.intellij.psi.util.PsiUtilBase;
import com.intellij.psi.PsiBundle;
import com.intellij.psi.PsiElement;
import com.intellij.util.ArrayUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public abstract class GlobalSearchScope extends SearchScope implements ProjectAwareFileFilter {
@@ -109,7 +103,7 @@ public abstract class GlobalSearchScope extends SearchScope implements ProjectAw
result.add(element2);
}
}
return new LocalSearchScope(PsiUtilBase.toPsiElementArray(result), null, localScope2.isIgnoreInjectedPsi());
return new LocalSearchScope(result.toArray(new PsiElement[result.size()]), null, localScope2.isIgnoreInjectedPsi());
}
@NotNull
@@ -161,22 +155,6 @@ public abstract class GlobalSearchScope extends SearchScope implements ProjectAw
return ProjectScope.getProjectScope(project);
}
public static GlobalSearchScope projectProductionScope(@NotNull Project project) {
return new IntersectionScope(projectScope(project),
new ProductionScopeFilter(project),
PsiBundle.message("psi.search.scope.production.files"));
}
public static GlobalSearchScope projectTestScope(@NotNull Project project) {
return new IntersectionScope(projectScope(project),
new TestScopeFilter(project),
PsiBundle.message("psi.search.scope.test.files"));
}
public static GlobalSearchScope filterScope(@NotNull Project project, @NotNull NamedScope set) {
return new FilterScopeAdapter(project, set);
}
public static GlobalSearchScope notScope(@NotNull final GlobalSearchScope scope) {
return new DelegatingGlobalSearchScope(scope) {
public boolean contains(final VirtualFile file) {
@@ -240,33 +218,12 @@ public abstract class GlobalSearchScope extends SearchScope implements ProjectAw
return module.getModuleWithDependentsScope();
}
public static GlobalSearchScope directoryScope(@NotNull PsiDirectory directory, final boolean withSubdirectories) {
return new DirectoryScope(directory, withSubdirectories);
}
public static GlobalSearchScope directoryScope(@NotNull Project project, @NotNull VirtualFile directory, final boolean withSubdirectories) {
return new DirectoryScope(project, directory, withSubdirectories);
}
public static GlobalSearchScope fileScope(@NotNull PsiFile psiFile) {
return new FileScope(psiFile.getProject(), psiFile.getVirtualFile());
}
public static GlobalSearchScope fileScope(final Project project, final VirtualFile virtualFile) {
return new FileScope(project, virtualFile);
}
public static GlobalSearchScope filesScope(final Project project, final Collection<VirtualFile> files) {
if (files.isEmpty()) return EMPTY_SCOPE;
return files.size() == 1? fileScope(project, files.iterator().next()) : new FilesScope(project, files);
}
private static class IntersectionScope extends GlobalSearchScope {
static class IntersectionScope extends GlobalSearchScope {
private final GlobalSearchScope myScope1;
private final GlobalSearchScope myScope2;
private final String myDisplayName;
private IntersectionScope(@NotNull GlobalSearchScope scope1, @NotNull GlobalSearchScope scope2, String displayName) {
IntersectionScope(@NotNull GlobalSearchScope scope1, @NotNull GlobalSearchScope scope2, String displayName) {
super(scope1.getProject() == null ? scope2.getProject() : scope1.getProject());
myScope1 = scope1;
myScope2 = scope2;
@@ -414,217 +371,6 @@ public abstract class GlobalSearchScope extends SearchScope implements ProjectAw
}
}
private static class ProductionScopeFilter extends GlobalSearchScope {
private final ProjectFileIndex myFileIndex;
private ProductionScopeFilter(@NotNull Project project) {
super(project);
myFileIndex = ProjectRootManager.getInstance(project).getFileIndex();
}
public boolean contains(VirtualFile file) {
return myFileIndex.isInSourceContent(file) && !myFileIndex.isInTestSourceContent(file);
}
public int compare(VirtualFile file1, VirtualFile file2) {
return 0;
}
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return true;
}
public boolean isSearchInModuleContent(@NotNull final Module aModule, final boolean testSources) {
return !testSources;
}
public boolean isSearchInLibraries() {
return false;
}
}
private static class TestScopeFilter extends GlobalSearchScope {
private final ProjectFileIndex myFileIndex;
private TestScopeFilter(@NotNull Project project) {
super(project);
myFileIndex = ProjectRootManager.getInstance(project).getFileIndex();
}
public boolean contains(VirtualFile file) {
return myFileIndex.isInTestSourceContent(file);
}
public int compare(VirtualFile file1, VirtualFile file2) {
return 0;
}
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return true;
}
public boolean isSearchInModuleContent(@NotNull final Module aModule, final boolean testSources) {
return testSources;
}
public boolean isSearchInLibraries() {
return false;
}
}
private static class DirectoryScope extends GlobalSearchScope {
private final VirtualFile myDirectory;
private final boolean myWithSubdirectories;
private DirectoryScope(@NotNull PsiDirectory directory, final boolean withSubdirectories) {
super(directory.getProject());
myWithSubdirectories = withSubdirectories;
myDirectory = directory.getVirtualFile();
}
private DirectoryScope(@NotNull Project project, @NotNull VirtualFile directory, final boolean withSubdirectories) {
super(project);
myWithSubdirectories = withSubdirectories;
myDirectory = directory;
}
public boolean contains(VirtualFile file) {
if (myWithSubdirectories) {
return VfsUtil.isAncestor(myDirectory, file, false);
}
else {
return myDirectory.equals(file.getParent());
}
}
public int compare(VirtualFile file1, VirtualFile file2) {
return 0;
}
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return true;
}
public boolean isSearchInLibraries() {
return false;
}
public String toString() {
//noinspection HardCodedStringLiteral
return "directory scope: " + myDirectory + "; withSubdirs:"+myWithSubdirectories;
}
}
private static class FileScope extends GlobalSearchScope {
private final VirtualFile myVirtualFile;
private final Module myModule;
private FileScope(final Project project, final VirtualFile virtualFile) {
super(project);
myVirtualFile = virtualFile;
ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex();
myModule = myVirtualFile != null ? fileIndex.getModuleForFile(myVirtualFile) : null;
}
public boolean contains(VirtualFile file) {
return Comparing.equal(myVirtualFile, file);
}
public int compare(VirtualFile file1, VirtualFile file2) {
return 0;
}
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return aModule == myModule;
}
public boolean isSearchInLibraries() {
return myModule == null;
}
}
private static class FilesScope extends GlobalSearchScope {
private final Collection<VirtualFile> myFiles;
public FilesScope(final Project project, final Collection<VirtualFile> files) {
super(project);
myFiles = files;
}
@Override
public boolean contains(final VirtualFile file) {
return myFiles.contains(file);
}
@Override
public int compare(final VirtualFile file1, final VirtualFile file2) {
return 0;
}
@Override
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return true;
}
@Override
public boolean isSearchInLibraries() {
return false;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof FilesScope)) return false;
return myFiles.equals(((FilesScope)o).myFiles);
}
@Override
public int hashCode() {
return myFiles.hashCode();
}
}
private static class FilterScopeAdapter extends GlobalSearchScope {
private final NamedScope mySet;
private final PsiManager myManager;
private FilterScopeAdapter(@NotNull Project project, @NotNull NamedScope set) {
super(project);
mySet = set;
myManager = PsiManager.getInstance(project);
}
public boolean contains(VirtualFile file) {
NamedScopesHolder holder = NamedScopeManager.getInstance(getProject());
final PackageSet packageSet = mySet.getValue();
if (packageSet != null) {
if (packageSet instanceof PackageSetBase) return ((PackageSetBase)packageSet).contains(file, holder);
PsiFile psiFile = myManager.findFile(file);
if (psiFile == null) return false;
return packageSet.contains(psiFile, holder);
}
return false;
}
public String getDisplayName() {
return mySet.getName();
}
public int compare(VirtualFile file1, VirtualFile file2) {
return 0;
}
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return true; //TODO (optimization?)
}
public boolean isSearchInLibraries() {
return true; //TODO (optimization?)
}
}
@NotNull
public static GlobalSearchScope getScopeRestrictedByFileTypes (@NotNull GlobalSearchScope scope, final FileType... fileTypes) {
LOG.assertTrue(fileTypes.length > 0);
@@ -0,0 +1,288 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.psi.search;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiBundle;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.search.scope.packageSet.*;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
/**
* @author yole
*/
public class GlobalSearchScopes {
private GlobalSearchScopes() {
}
public static GlobalSearchScope projectProductionScope(@NotNull Project project) {
return new GlobalSearchScope.IntersectionScope(GlobalSearchScope.projectScope(project),
new ProductionScopeFilter(project),
PsiBundle.message("psi.search.scope.production.files"));
}
public static GlobalSearchScope projectTestScope(@NotNull Project project) {
return new GlobalSearchScope.IntersectionScope(GlobalSearchScope.projectScope(project),
new TestScopeFilter(project),
PsiBundle.message("psi.search.scope.test.files"));
}
public static GlobalSearchScope directoryScope(@NotNull PsiDirectory directory, final boolean withSubdirectories) {
return new DirectoryScope(directory, withSubdirectories);
}
public static GlobalSearchScope directoryScope(@NotNull Project project, @NotNull VirtualFile directory, final boolean withSubdirectories) {
return new DirectoryScope(project, directory, withSubdirectories);
}
public static GlobalSearchScope fileScope(@NotNull PsiFile psiFile) {
return new FileScope(psiFile.getProject(), psiFile.getVirtualFile());
}
public static GlobalSearchScope fileScope(final Project project, final VirtualFile virtualFile) {
return new FileScope(project, virtualFile);
}
public static GlobalSearchScope filesScope(final Project project, final Collection<VirtualFile> files) {
if (files.isEmpty()) return GlobalSearchScope.EMPTY_SCOPE;
return files.size() == 1? fileScope(project, files.iterator().next()) : new FilesScope(project, files);
}
private static class FilterScopeAdapter extends GlobalSearchScope {
private final NamedScope mySet;
private final PsiManager myManager;
private FilterScopeAdapter(@NotNull Project project, @NotNull NamedScope set) {
super(project);
mySet = set;
myManager = PsiManager.getInstance(project);
}
public boolean contains(VirtualFile file) {
NamedScopesHolder holder = NamedScopeManager.getInstance(getProject());
final PackageSet packageSet = mySet.getValue();
if (packageSet != null) {
if (packageSet instanceof PackageSetBase) return ((PackageSetBase)packageSet).contains(file, holder);
PsiFile psiFile = myManager.findFile(file);
if (psiFile == null) return false;
return packageSet.contains(psiFile, holder);
}
return false;
}
public String getDisplayName() {
return mySet.getName();
}
public int compare(VirtualFile file1, VirtualFile file2) {
return 0;
}
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return true; //TODO (optimization?)
}
public boolean isSearchInLibraries() {
return true; //TODO (optimization?)
}
}
public static GlobalSearchScope filterScope(@NotNull Project project, @NotNull NamedScope set) {
return new FilterScopeAdapter(project, set);
}
private static class ProductionScopeFilter extends GlobalSearchScope {
private final ProjectFileIndex myFileIndex;
private ProductionScopeFilter(@NotNull Project project) {
super(project);
myFileIndex = ProjectRootManager.getInstance(project).getFileIndex();
}
public boolean contains(VirtualFile file) {
return myFileIndex.isInSourceContent(file) && !myFileIndex.isInTestSourceContent(file);
}
public int compare(VirtualFile file1, VirtualFile file2) {
return 0;
}
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return true;
}
public boolean isSearchInModuleContent(@NotNull final Module aModule, final boolean testSources) {
return !testSources;
}
public boolean isSearchInLibraries() {
return false;
}
}
private static class TestScopeFilter extends GlobalSearchScope {
private final ProjectFileIndex myFileIndex;
private TestScopeFilter(@NotNull Project project) {
super(project);
myFileIndex = ProjectRootManager.getInstance(project).getFileIndex();
}
public boolean contains(VirtualFile file) {
return myFileIndex.isInTestSourceContent(file);
}
public int compare(VirtualFile file1, VirtualFile file2) {
return 0;
}
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return true;
}
public boolean isSearchInModuleContent(@NotNull final Module aModule, final boolean testSources) {
return testSources;
}
public boolean isSearchInLibraries() {
return false;
}
}
private static class DirectoryScope extends GlobalSearchScope {
private final VirtualFile myDirectory;
private final boolean myWithSubdirectories;
private DirectoryScope(@NotNull PsiDirectory directory, final boolean withSubdirectories) {
super(directory.getProject());
myWithSubdirectories = withSubdirectories;
myDirectory = directory.getVirtualFile();
}
private DirectoryScope(@NotNull Project project, @NotNull VirtualFile directory, final boolean withSubdirectories) {
super(project);
myWithSubdirectories = withSubdirectories;
myDirectory = directory;
}
public boolean contains(VirtualFile file) {
if (myWithSubdirectories) {
return VfsUtil.isAncestor(myDirectory, file, false);
}
else {
return myDirectory.equals(file.getParent());
}
}
public int compare(VirtualFile file1, VirtualFile file2) {
return 0;
}
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return true;
}
public boolean isSearchInLibraries() {
return false;
}
public String toString() {
//noinspection HardCodedStringLiteral
return "directory scope: " + myDirectory + "; withSubdirs:"+myWithSubdirectories;
}
}
private static class FileScope extends GlobalSearchScope {
private final VirtualFile myVirtualFile;
private final Module myModule;
private FileScope(final Project project, final VirtualFile virtualFile) {
super(project);
myVirtualFile = virtualFile;
ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex();
myModule = myVirtualFile != null ? fileIndex.getModuleForFile(myVirtualFile) : null;
}
public boolean contains(VirtualFile file) {
return Comparing.equal(myVirtualFile, file);
}
public int compare(VirtualFile file1, VirtualFile file2) {
return 0;
}
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return aModule == myModule;
}
public boolean isSearchInLibraries() {
return myModule == null;
}
}
private static class FilesScope extends GlobalSearchScope {
private final Collection<VirtualFile> myFiles;
public FilesScope(final Project project, final Collection<VirtualFile> files) {
super(project);
myFiles = files;
}
@Override
public boolean contains(final VirtualFile file) {
return myFiles.contains(file);
}
@Override
public int compare(final VirtualFile file1, final VirtualFile file2) {
return 0;
}
@Override
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return true;
}
@Override
public boolean isSearchInLibraries() {
return false;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof FilesScope)) return false;
return myFiles.equals(((FilesScope)o).myFiles);
}
@Override
public int hashCode() {
return myFiles.hashCode();
}
}
}
@@ -447,7 +447,7 @@ public class FindInProjectUtil {
CacheManager cacheManager = ((PsiManagerEx)pm).getCacheManager();
SearchScope customScope = findModel.getCustomScope();
@NotNull GlobalSearchScope scope = psiDirectory != null
? GlobalSearchScope.directoryScope(psiDirectory, true)
? GlobalSearchScopes.directoryScope(psiDirectory, true)
: module != null
? moduleContentScope(module)
: customScope instanceof GlobalSearchScope
@@ -534,7 +534,7 @@ public class FindInProjectUtil {
for (VirtualFile root : contentRoots) {
PsiDirectory directory = psiManager.findDirectory(root);
if (directory != null) {
GlobalSearchScope moduleContent = GlobalSearchScope.directoryScope(directory, true);
GlobalSearchScope moduleContent = GlobalSearchScopes.directoryScope(directory, true);
result = result == null ? moduleContent : result.uniteWith(moduleContent);
}
}
@@ -25,6 +25,7 @@ import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.psi.search.LocalSearchScope;
import com.intellij.psi.search.SearchScope;
import com.intellij.psi.search.scope.packageSet.NamedScope;
@@ -142,14 +143,14 @@ public abstract class HierarchyTreeStructure extends AbstractTreeStructure {
searchScope = new LocalSearchScope(thisClass);
}
else if (HierarchyBrowserBaseEx.SCOPE_PROJECT.equals(scopeType)) {
searchScope = GlobalSearchScope.projectProductionScope(myProject);
searchScope = GlobalSearchScopes.projectProductionScope(myProject);
}
else if (HierarchyBrowserBaseEx.SCOPE_TEST.equals(scopeType)) {
searchScope = GlobalSearchScope.projectTestScope(myProject);
searchScope = GlobalSearchScopes.projectTestScope(myProject);
} else {
final NamedScope namedScope = NamedScopesHolder.getScope(myProject, scopeType);
if (namedScope != null) {
searchScope = GlobalSearchScope.filterScope(myProject, namedScope);
searchScope = GlobalSearchScopes.filterScope(myProject, namedScope);
}
}
return searchScope;
@@ -35,6 +35,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.util.*;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
@@ -183,12 +184,12 @@ public class PlatformPackageUtil {
final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(baseDir.getProject()).getFileIndex();
if (fileIndex.isInTestSourceContent(baseDir.getVirtualFile())) {
if (skipSourceDirsForBaseTestDirectory) {
return scope.intersectWith(GlobalSearchScope.projectTestScope(baseDir.getProject()));
return scope.intersectWith(GlobalSearchScopes.projectTestScope(baseDir.getProject()));
}
}
else {
if (skipTestDirsForBaseSourceDirectory) {
return scope.intersectWith(GlobalSearchScope.projectProductionScope(baseDir.getProject()));
return scope.intersectWith(GlobalSearchScopes.projectProductionScope(baseDir.getProject()));
}
}
}
@@ -36,10 +36,7 @@ import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiWhiteSpace;
import com.intellij.psi.search.DelegatingGlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.LocalSearchScope;
import com.intellij.psi.search.SearchScope;
import com.intellij.psi.search.*;
import com.intellij.psi.search.scope.packageSet.NamedScope;
import com.intellij.psi.search.scope.packageSet.NamedScopeManager;
import com.intellij.psi.search.scope.packageSet.NamedScopesHolder;
@@ -165,13 +162,13 @@ public class ScopeChooserCombo extends ComboboxWithBrowseButton implements Dispo
List<NamedScope> changeLists = ChangeListsScopesProvider.getInstance(myProject).getCustomScopes();
for (NamedScope changeListScope : changeLists) {
model.addElement(new ScopeDescriptor(GlobalSearchScope.filterScope(myProject, changeListScope)));
model.addElement(new ScopeDescriptor(GlobalSearchScopes.filterScope(myProject, changeListScope)));
}
final NamedScopesHolder[] holders = NamedScopesHolder.getAllNamedScopeHolders(myProject);
for (NamedScopesHolder holder : holders) {
NamedScope[] scopes = holder.getEditableScopes(); //predefined scopes already included
for (NamedScope scope : scopes) {
model.addElement(new ScopeDescriptor(GlobalSearchScope.filterScope(myProject, scope)));
model.addElement(new ScopeDescriptor(GlobalSearchScopes.filterScope(myProject, scope)));
}
}
@@ -201,8 +198,8 @@ public class ScopeChooserCombo extends ComboboxWithBrowseButton implements Dispo
if (suggestSearchInLibs) {
result.add(GlobalSearchScope.allScope(project));
}
result.add(GlobalSearchScope.projectProductionScope(project));
result.add(GlobalSearchScope.projectTestScope(project));
result.add(GlobalSearchScopes.projectProductionScope(project));
result.add(GlobalSearchScopes.projectTestScope(project));
if (dataContext != null) {
PsiElement dataContextElement = getDataContextElement(dataContext);
@@ -350,7 +347,7 @@ public class ScopeChooserCombo extends ComboboxWithBrowseButton implements Dispo
final VirtualFile[] files = PlatformDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext);
if (files != null) {
final List<VirtualFile> openFiles = Arrays.asList(files);
result.add(new DelegatingGlobalSearchScope(GlobalSearchScope.filesScope(project, openFiles)){
result.add(new DelegatingGlobalSearchScope(GlobalSearchScopes.filesScope(project, openFiles)){
@Override
public String getDisplayName() {
return "Selected files";
@@ -36,6 +36,7 @@ import com.intellij.psi.impl.cache.impl.id.IdIndexEntry;
import com.intellij.psi.impl.cache.impl.todo.TodoIndex;
import com.intellij.psi.impl.cache.impl.todo.TodoIndexEntry;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.psi.search.IndexPattern;
import com.intellij.psi.search.IndexPatternProvider;
import com.intellij.psi.util.PsiUtilBase;
@@ -188,7 +189,7 @@ public class IndexCacheManagerImpl implements CacheManager{
count[0] += value.intValue();
return true;
}
}, GlobalSearchScope.fileScope(myProject, file));
}, GlobalSearchScopes.fileScope(myProject, file));
return count[0];
}
@@ -47,6 +47,7 @@ import com.intellij.psi.impl.smartPointers.SmartPointerManagerImpl;
import com.intellij.psi.impl.source.PsiFileImpl;
import com.intellij.psi.impl.source.resolve.FileContextUtil;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.psi.search.SearchScope;
import com.intellij.util.ConcurrencyUtil;
import com.intellij.util.FileContentUtil;
@@ -480,7 +481,7 @@ public class FileManagerImpl implements FileManager {
final VirtualFile vf = f == null ? null : f.getVirtualFile();
return f == null || vf == null || vf.isDirectory() || allScope.contains(vf)
? allScope : GlobalSearchScope.fileScope(f).uniteWith(allScope);
? allScope : GlobalSearchScopes.fileScope(f).uniteWith(allScope);
}
}
@@ -27,7 +27,7 @@ import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.util.indexing.FileBasedIndex;
import com.intellij.util.indexing.FileContent;
import com.intellij.util.indexing.FileContentImpl;
@@ -133,7 +133,8 @@ public class StubTree {
final int id = Math.abs(FileBasedIndex.getFileId(vFile));
if (id > 0) {
final List<SerializedStubTree> datas = FileBasedIndex.getInstance().getValues(StubUpdatingIndex.INDEX_ID, id, GlobalSearchScope.fileScope(project, vFile));
final List<SerializedStubTree> datas = FileBasedIndex.getInstance().getValues(StubUpdatingIndex.INDEX_ID, id, GlobalSearchScopes
.fileScope(project, vFile));
final int size = datas.size();
if (size == 1) {
@@ -16,7 +16,7 @@
package com.siyeh.ig.maturity;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.Query;
@@ -150,7 +150,7 @@ public class ObsoleteCollectionInspection extends BaseInspection {
final PsiFile containingFile = namedElement.getContainingFile();
final Query<PsiReference> query =
ReferencesSearch.search(namedElement,
GlobalSearchScope.fileScope(containingFile));
GlobalSearchScopes.fileScope(containingFile));
for (PsiReference reference : query) {
final PsiElement element = reference.getElement();
if (isRequiredObsoleteCollectionElement(element)) {
@@ -201,7 +201,8 @@ public class GroovyConstructorUsagesSearcher extends QueryExecutorBase<PsiRefere
if (gppScope instanceof GlobalSearchScope) {
String name = currentTarget.getName();
if (PsiSearchHelper.SERVICE.getInstance(currentTarget.getProject()).isCheapEnoughToSearch(name, (GlobalSearchScope)gppScope, null, null) ==
if (PsiSearchHelper.SERVICE.getInstance(currentTarget.getProject()).isCheapEnoughToSearch(name, (GlobalSearchScope)gppScope, null,
null) ==
PsiSearchHelper.SearchCostResult.ZERO_OCCURRENCES) {
return;
}
@@ -350,7 +351,7 @@ public class GroovyConstructorUsagesSearcher extends QueryExecutorBase<PsiRefere
}
});
GlobalSearchScope withTypedAnno = GlobalSearchScope.filesScope(project, files);
GlobalSearchScope withTypedAnno = GlobalSearchScopes.filesScope(project, files);
return withTypedAnno.union(gppExtensions);
}
@@ -20,7 +20,6 @@ import com.intellij.execution.ExecutionBundle;
import com.intellij.execution.configurations.*;
import com.intellij.execution.testframework.SourceScope;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.util.io.FileUtil;
@@ -28,9 +27,9 @@ import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import java.util.Collection;
import java.util.List;
/**
* User: anna
@@ -51,7 +50,8 @@ class TestDirectory extends TestPackage {
public SourceScope getSourceScope() {
final String dirName = myConfiguration.getPersistentData().getDirName();
final VirtualFile file = LocalFileSystem.getInstance().findFileByPath(FileUtil.toSystemIndependentName(dirName));
final GlobalSearchScope globalSearchScope = file == null ? GlobalSearchScope.EMPTY_SCOPE : GlobalSearchScope.directoryScope(myProject, file, true);
final GlobalSearchScope globalSearchScope = file == null ? GlobalSearchScope.EMPTY_SCOPE : GlobalSearchScopes
.directoryScope(myProject, file, true);
return new SourceScope() {
@Override
public GlobalSearchScope getGlobalSearchScope() {
@@ -39,6 +39,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.impl.search.LowLevelSearchUtil;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.util.CommonProcessors;
import com.intellij.util.Processor;
@@ -152,7 +153,7 @@ public class DuplicatePropertyInspection extends GlobalSimpleInspectionTool {
Module module = ModuleUtil.findModuleForPsiElement(file);
if (module == null) return;
final GlobalSearchScope scope = CURRENT_FILE
? GlobalSearchScope.fileScope(file)
? GlobalSearchScopes.fileScope(file)
: MODULE_WITH_DEPENDENCIES
? GlobalSearchScope.moduleWithDependenciesScope(module)
: GlobalSearchScope.projectScope(file.getProject());