mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move fileScope and filesScope back from GlobalSearchScopes to GlobalSearchScope
This commit is contained in:
@@ -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.GlobalSearchScopes;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.indexing.*;
|
||||
import com.intellij.util.io.DataExternalizer;
|
||||
import org.intellij.images.fileTypes.ImageFileTypeManager;
|
||||
@@ -71,7 +71,7 @@ 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, GlobalSearchScopes
|
||||
FileBasedIndex.getInstance().processValues(INDEX_ID, Math.abs(FileBasedIndex.getFileId(virtualFile)), virtualFile, processor, GlobalSearchScope
|
||||
.fileScope(project, virtualFile));
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.FileViewProvider;
|
||||
import com.intellij.psi.impl.java.stubs.JavaStubElementTypes;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.GlobalSearchScopes;
|
||||
import com.intellij.testFramework.LightVirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -49,7 +48,7 @@ public class PsiJavaFileImpl extends PsiJavaFileBaseImpl {
|
||||
if (file != null && !(file instanceof LightVirtualFile)) {
|
||||
final FileIndexFacade index = ServiceManager.getService(getProject(), FileIndexFacade.class);
|
||||
if (!index.isInSource(file) && !index.isInLibraryClasses(file)) {
|
||||
return GlobalSearchScopes.fileScope(this);
|
||||
return GlobalSearchScope.fileScope(this);
|
||||
}
|
||||
}
|
||||
return super.getResolveScope();
|
||||
|
||||
+2
-2
@@ -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.GlobalSearchScopes;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
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, GlobalSearchScopes.fileScope(root.getContainingFile()))) {
|
||||
for (PsiReference reference : ReferencesSearch.search(root, GlobalSearchScope.fileScope(root.getContainingFile()))) {
|
||||
final PsiElement element = reference.getElement();
|
||||
final PsiExpression expr = PsiTreeUtil.getParentOfType(element, PsiExpression.class, false);
|
||||
if (expr != null) {
|
||||
|
||||
@@ -15,8 +15,10 @@
|
||||
*/
|
||||
package com.intellij.openapi.roots;
|
||||
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
@@ -33,6 +35,9 @@ public abstract class FileIndexFacade {
|
||||
public abstract boolean isInLibraryClasses(VirtualFile file);
|
||||
public abstract boolean isExcludedFile(VirtualFile file);
|
||||
|
||||
@Nullable
|
||||
public abstract Module getModuleForFile(VirtualFile file);
|
||||
|
||||
/**
|
||||
* Checks if <code>file</code> is an ancestor of <code>baseDir</code> and none of the files
|
||||
* between them are excluded from the project.
|
||||
|
||||
@@ -15,20 +15,25 @@
|
||||
*/
|
||||
package com.intellij.psi.search;
|
||||
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.FileTypeRegistry;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.FileIndexFacade;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiBundle;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
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 {
|
||||
@@ -218,6 +223,19 @@ public abstract class GlobalSearchScope extends SearchScope implements ProjectAw
|
||||
return module.getModuleWithDependentsScope();
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
static class IntersectionScope extends GlobalSearchScope {
|
||||
private final GlobalSearchScope myScope1;
|
||||
private final GlobalSearchScope myScope2;
|
||||
@@ -469,4 +487,74 @@ public abstract class GlobalSearchScope extends SearchScope implements ProjectAw
|
||||
}
|
||||
|
||||
public static final GlobalSearchScope EMPTY_SCOPE = new EmptyScope();
|
||||
|
||||
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;
|
||||
FileIndexFacade fileIndex = ServiceManager.getService(project, FileIndexFacade.class);
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ 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.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiBundle;
|
||||
@@ -29,8 +28,6 @@ import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.search.scope.packageSet.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
*/
|
||||
@@ -58,19 +55,6 @@ public class GlobalSearchScopes {
|
||||
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;
|
||||
@@ -215,74 +199,4 @@ public class GlobalSearchScopes {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,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(GlobalSearchScopes.filesScope(project, openFiles)){
|
||||
result.add(new DelegatingGlobalSearchScope(GlobalSearchScope.filesScope(project, openFiles)){
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return "Selected files";
|
||||
|
||||
@@ -16,11 +16,13 @@
|
||||
|
||||
package com.intellij.openapi.vcs.impl;
|
||||
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.FileIndexFacade;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.impl.DirectoryIndex;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
@@ -53,6 +55,12 @@ public class ProjectFileIndexFacade extends FileIndexFacade {
|
||||
return myRootManager.getFileIndex().isIgnored(file);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Module getModuleForFile(VirtualFile file) {
|
||||
return myRootManager.getFileIndex().getModuleForFile(file);
|
||||
}
|
||||
|
||||
public boolean isValidAncestor(final VirtualFile baseDir, VirtualFile childDir) {
|
||||
if (!childDir.isDirectory()) {
|
||||
childDir = childDir.getParent();
|
||||
|
||||
+1
-2
@@ -35,7 +35,6 @@ 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.PsiUtilCore;
|
||||
@@ -192,7 +191,7 @@ public class IndexCacheManagerImpl implements CacheManager{
|
||||
count[0] += value.intValue();
|
||||
return true;
|
||||
}
|
||||
}, GlobalSearchScopes.fileScope(myProject, file));
|
||||
}, GlobalSearchScope.fileScope(myProject, file));
|
||||
return count[0];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ import com.intellij.psi.impl.PsiManagerImpl;
|
||||
import com.intellij.psi.impl.ResolveScopeManager;
|
||||
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.containers.ConcurrentFactoryMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -188,7 +187,7 @@ public class ResolveScopeManagerImpl extends ResolveScopeManager {
|
||||
final VirtualFile vf = f == null ? null : f.getVirtualFile();
|
||||
|
||||
return f == null || vf == null || vf.isDirectory() || allScope.contains(vf)
|
||||
? allScope : GlobalSearchScopes.fileScope(f).uniteWith(allScope);
|
||||
? allScope : GlobalSearchScope.fileScope(f).uniteWith(allScope);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,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.GlobalSearchScopes;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.indexing.FileBasedIndex;
|
||||
import com.intellij.util.indexing.FileContent;
|
||||
import com.intellij.util.indexing.FileContentImpl;
|
||||
@@ -73,7 +73,7 @@ public class StubTreeLoaderImpl extends StubTreeLoader {
|
||||
|
||||
final int id = Math.abs(FileBasedIndex.getFileId(vFile));
|
||||
if (id > 0) {
|
||||
final List<SerializedStubTree> datas = FileBasedIndex.getInstance().getValues(StubUpdatingIndex.INDEX_ID, id, GlobalSearchScopes
|
||||
final List<SerializedStubTree> datas = FileBasedIndex.getInstance().getValues(StubUpdatingIndex.INDEX_ID, id, GlobalSearchScope
|
||||
.fileScope(project, vFile));
|
||||
final int size = datas.size();
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.openapi.vcs.impl;
|
||||
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.FileIndexFacade;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
@@ -52,6 +53,11 @@ public class DefaultFileIndexFacade extends FileIndexFacade {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Module getModuleForFile(VirtualFile file) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isValidAncestor(final VirtualFile baseDir, final VirtualFile childDir) {
|
||||
return VfsUtil.isAncestor(baseDir, childDir, false);
|
||||
}
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@
|
||||
package com.siyeh.ig.maturity;
|
||||
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScopes;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
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,
|
||||
GlobalSearchScopes.fileScope(containingFile));
|
||||
GlobalSearchScope.fileScope(containingFile));
|
||||
for (PsiReference reference : query) {
|
||||
final PsiElement element = reference.getElement();
|
||||
if (isRequiredObsoleteCollectionElement(element)) {
|
||||
|
||||
+1
-1
@@ -351,7 +351,7 @@ public class GroovyConstructorUsagesSearcher extends QueryExecutorBase<PsiRefere
|
||||
}
|
||||
});
|
||||
|
||||
GlobalSearchScope withTypedAnno = GlobalSearchScopes.filesScope(project, files);
|
||||
GlobalSearchScope withTypedAnno = GlobalSearchScope.filesScope(project, files);
|
||||
return withTypedAnno.union(gppExtensions);
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -39,7 +39,6 @@ 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;
|
||||
@@ -153,7 +152,7 @@ public class DuplicatePropertyInspection extends GlobalSimpleInspectionTool {
|
||||
Module module = ModuleUtil.findModuleForPsiElement(file);
|
||||
if (module == null) return;
|
||||
final GlobalSearchScope scope = CURRENT_FILE
|
||||
? GlobalSearchScopes.fileScope(file)
|
||||
? GlobalSearchScope.fileScope(file)
|
||||
: MODULE_WITH_DEPENDENCIES
|
||||
? GlobalSearchScope.moduleWithDependenciesScope(module)
|
||||
: GlobalSearchScope.projectScope(file.getProject());
|
||||
|
||||
Reference in New Issue
Block a user