[core-api] Extract GlobalSearchScopeUtil.includeContainingFile

GitOrigin-RevId: 188ead3e7011e20da66cae92c848c75d801d690a
This commit is contained in:
Tagir Valeev
2025-05-30 15:45:04 +02:00
committed by intellij-monorepo-bot
parent 96974e33ba
commit ce763a71b5
3 changed files with 22 additions and 10 deletions

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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;
}
}