mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 11:53:49 +07:00
[core-api] Extract GlobalSearchScopeUtil.includeContainingFile
GitOrigin-RevId: 188ead3e7011e20da66cae92c848c75d801d690a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
96974e33ba
commit
ce763a71b5
@@ -3,10 +3,9 @@ package com.intellij.psi.search.searches;
|
||||
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.GlobalSearchScopeUtil;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.util.Query;
|
||||
@@ -107,14 +106,7 @@ public final class DirectClassInheritorsSearch extends ExtensibleQueryFactory<Ps
|
||||
|
||||
public static @NotNull Query<PsiClass> search(@NotNull PsiClass aClass) {
|
||||
GlobalSearchScope scope = GlobalSearchScope.allScope(PsiUtilCore.getProjectInReadAction(aClass));
|
||||
PsiFile file = aClass.getContainingFile();
|
||||
if (file != null) {
|
||||
VirtualFile vFile = file.getVirtualFile();
|
||||
if (vFile != null && !scope.contains(vFile)) {
|
||||
// include file scope to properly support scratch files
|
||||
scope = scope.union(GlobalSearchScope.fileScope(file));
|
||||
}
|
||||
}
|
||||
scope = GlobalSearchScopeUtil.includeContainingFile(scope, aClass);
|
||||
return search(aClass, scope);
|
||||
}
|
||||
|
||||
|
||||
@@ -3203,6 +3203,7 @@ f:com.intellij.psi.search.GlobalSearchScopeUtil
|
||||
- s:flattenIntersectionScope(com.intellij.psi.search.GlobalSearchScope):java.util.List
|
||||
- s:flattenUnionScope(com.intellij.psi.search.GlobalSearchScope):java.util.List
|
||||
- s:getLocalScopeFiles(com.intellij.psi.search.LocalSearchScope):java.util.Set
|
||||
- s:includeContainingFile(com.intellij.psi.search.GlobalSearchScope,com.intellij.psi.PsiElement):com.intellij.psi.search.GlobalSearchScope
|
||||
- s:isIntersectionScope(com.intellij.psi.search.GlobalSearchScope):Z
|
||||
- s:toGlobalSearchScope(com.intellij.psi.search.SearchScope,com.intellij.openapi.project.Project):com.intellij.psi.search.GlobalSearchScope
|
||||
c:com.intellij.psi.search.LocalSearchScope
|
||||
|
||||
@@ -75,4 +75,23 @@ public final class GlobalSearchScopeUtil {
|
||||
result.add(scope);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Modifies the scope if necessary to include the file of the given element.
|
||||
* This is useful to properly support search in scratch files.
|
||||
*
|
||||
* @param scope scope to update
|
||||
* @param element element whose file should be included in the scope
|
||||
* @return the corrected scope. Returns the original scope if it already includes the file of the element.
|
||||
*/
|
||||
public static GlobalSearchScope includeContainingFile(@NotNull GlobalSearchScope scope, @NotNull PsiElement element) {
|
||||
PsiFile file = element.getContainingFile();
|
||||
if (file != null) {
|
||||
VirtualFile vFile = file.getVirtualFile();
|
||||
if (vFile != null && !scope.contains(vFile)) {
|
||||
return scope.union(GlobalSearchScope.fileScope(file));
|
||||
}
|
||||
}
|
||||
return scope;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user