use extended use scopes (by UseScopeEnlarger)

GitOrigin-RevId: 27b10a3019716a66beaee7101c1ff706caebf757
This commit is contained in:
Dmitry Batkovich
2020-10-21 11:22:40 +00:00
committed by intellij-monorepo-bot
parent 891b3e6675
commit 3065547b80
5 changed files with 17 additions and 16 deletions
@@ -221,7 +221,7 @@ public final class UnusedSymbolUtil {
log("* "+member.getName()+" no name; false");
return false;
}
SearchScope useScope = member.getUseScope();
SearchScope useScope = PsiSearchHelper.getInstance(project).getUseScope(member);
PsiSearchHelper searchHelper = PsiSearchHelper.getInstance(project);
if (useScope instanceof GlobalSearchScope) {
// some classes may have references from within XML outside dependent modules, e.g. our actions
@@ -2,6 +2,7 @@
package com.intellij.codeInsight.daemon.problems
import com.intellij.psi.*
import com.intellij.psi.search.PsiSearchHelper
import com.intellij.psi.search.SearchScope
internal class ScopedMember(val member: Member, val scope: SearchScope) {
@@ -19,7 +20,8 @@ internal class ScopedMember(val member: Member, val scope: SearchScope) {
}
companion object {
internal fun create(psiMember: PsiMember, scope: SearchScope = psiMember.useScope): ScopedMember? {
internal fun create(psiMember: PsiMember,
scope: SearchScope = PsiSearchHelper.getInstance(psiMember.project).getUseScope(psiMember)): ScopedMember? {
val member = Member.create(psiMember) ?: return null
return ScopedMember(member, scope)
}
@@ -4,6 +4,7 @@ package com.intellij.psi.search.searches;
import com.intellij.openapi.application.ReadAction;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.psi.search.SearchScope;
import com.intellij.psi.util.PsiUtilCore;
import com.intellij.util.EmptyQuery;
@@ -28,7 +29,8 @@ public final class FunctionalExpressionSearch extends ExtensibleQueryFactory<Psi
@NotNull
public SearchScope getEffectiveSearchScope () {
return myScope.intersectWith(myElementToSearch.getUseScope());
return myScope
.intersectWith(PsiSearchHelper.getInstance(myElementToSearch.getProject()).getUseScope(myElementToSearch));
}
}
@@ -17,10 +17,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.impl.java.stubs.index.JavaAnonymousClassBaseRefOccurenceIndex;
import com.intellij.psi.impl.java.stubs.index.JavaSuperClassNameOccurenceIndex;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopeUtil;
import com.intellij.psi.search.PsiSearchScopeUtil;
import com.intellij.psi.search.SearchScope;
import com.intellij.psi.search.*;
import com.intellij.psi.search.searches.AllClassesSearch;
import com.intellij.psi.search.searches.DirectClassInheritorsSearch;
import com.intellij.psi.util.PsiUtil;
@@ -186,12 +183,11 @@ public class JavaDirectInheritorsSearcher implements QueryExecutor<PsiClass, Dir
@NotNull DirectClassInheritorsSearch.SearchParameters parameters) {
SearchScope useScope;
CompilerDirectHierarchyInfo info = performSearchUsingCompilerIndices(parameters, project);
if (info == null) {
useScope = ReadAction.compute(baseClass::getUseScope);
}
else {
useScope = ReadAction.compute(() -> baseClass.getUseScope().intersectWith(info.getDirtyScope()));
}
useScope = ReadAction.compute(() -> {
SearchScope resultScope = PsiSearchHelper.getInstance(project).getUseScope(baseClass);
if (info == null) return resultScope;
return resultScope.intersectWith(info.getDirtyScope());
});
DumbService dumbService = DumbService.getInstance(project);
GlobalSearchScope globalUseScope = ReadAction.compute(
@@ -70,17 +70,18 @@ public class MethodUsagesSearcher extends QueryExecutorBase<PsiReference, Method
DumbService.getInstance(p.getProject()).runReadActionInSmartMode(()-> {
PsiMethod[] methods = strictSignatureSearch ? new PsiMethod[]{method} : aClass.findMethodsByName(methodName[0], false);
PsiSearchHelper psiSearchHelper = PsiSearchHelper.getInstance(p.getProject());
short searchContext = UsageSearchContext.IN_CODE | UsageSearchContext.IN_COMMENTS | UsageSearchContext.IN_FOREIGN_LANGUAGES;
for (PsiMethod m : methods) {
SearchScope methodUseScope = PsiSearchHelper.getInstance(p.getProject()).getUseScope(m);
SearchScope methodUseScope = psiSearchHelper.getUseScope(m);
collector.searchWord(methodName[0], searchScope.intersectWith(methodUseScope), searchContext, true, m,
getTextOccurrenceProcessor(new PsiMethod[] {m}, aClass, strictSignatureSearch));
}
SearchScope accessScope = methods[0].getUseScope();
SearchScope accessScope = psiSearchHelper.getUseScope(methods[0]);
for (int i = 1; i < methods.length; i++) {
PsiMethod method1 = methods[i];
accessScope = accessScope.union(method1.getUseScope());
accessScope = accessScope.union(psiSearchHelper.getUseScope(method1));
}
SearchScope restrictedByAccessScope = searchScope.intersectWith(accessScope);
SimpleAccessorReferenceSearcher.addPropertyAccessUsages(method, restrictedByAccessScope, collector);