mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
directory class inheritance search should not return inheritors of classes with the same short name but different qname
This commit is contained in:
@@ -248,7 +248,7 @@ public class ClassInheritorsSearch extends ExtensibleQueryFactory<PsiClass, Clas
|
||||
}
|
||||
|
||||
currentBase.set(psiClass);
|
||||
if (!DirectClassInheritorsSearch.search(psiClass, projectScope, parameters.isIncludeAnonymous()).forEach(processor)) return false;
|
||||
if (!DirectClassInheritorsSearch.search(psiClass, projectScope, parameters.isIncludeAnonymous(), false).forEach(processor)) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -33,17 +33,21 @@ public class DirectClassInheritorsSearch extends ExtensibleQueryFactory<PsiClass
|
||||
private final PsiClass myClass;
|
||||
private final SearchScope myScope;
|
||||
private final boolean myIncludeAnonymous;
|
||||
private final boolean myCheckInheritance;
|
||||
|
||||
public SearchParameters(final PsiClass aClass, SearchScope scope, final boolean includeAnonymous) {
|
||||
myIncludeAnonymous = includeAnonymous;
|
||||
public SearchParameters(PsiClass aClass, SearchScope scope, boolean includeAnonymous, boolean checkInheritance) {
|
||||
myClass = aClass;
|
||||
myScope = scope;
|
||||
myIncludeAnonymous = includeAnonymous;
|
||||
myCheckInheritance = checkInheritance;
|
||||
}
|
||||
|
||||
public SearchParameters(final PsiClass aClass, SearchScope scope, final boolean includeAnonymous) {
|
||||
this(aClass, scope, includeAnonymous, true);
|
||||
}
|
||||
|
||||
public SearchParameters(final PsiClass aClass, final SearchScope scope) {
|
||||
myClass = aClass;
|
||||
myScope = scope;
|
||||
myIncludeAnonymous = true;
|
||||
this(aClass, scope, true);
|
||||
}
|
||||
|
||||
public PsiClass getClassToProcess() {
|
||||
@@ -54,6 +58,10 @@ public class DirectClassInheritorsSearch extends ExtensibleQueryFactory<PsiClass
|
||||
return myScope;
|
||||
}
|
||||
|
||||
public boolean isCheckInheritance() {
|
||||
return myCheckInheritance;
|
||||
}
|
||||
|
||||
public boolean includeAnonymous() {
|
||||
return myIncludeAnonymous;
|
||||
}
|
||||
@@ -70,7 +78,14 @@ public class DirectClassInheritorsSearch extends ExtensibleQueryFactory<PsiClass
|
||||
}
|
||||
|
||||
public static Query<PsiClass> search(final PsiClass aClass, SearchScope scope, boolean includeAnonymous) {
|
||||
final Query<PsiClass> raw = INSTANCE.createUniqueResultsQuery(new SearchParameters(aClass, scope, includeAnonymous));
|
||||
return search(aClass, scope, includeAnonymous, true);
|
||||
}
|
||||
|
||||
public static Query<PsiClass> search(final PsiClass aClass,
|
||||
SearchScope scope,
|
||||
boolean includeAnonymous,
|
||||
final boolean checkInheritance) {
|
||||
final Query<PsiClass> raw = INSTANCE.createUniqueResultsQuery(new SearchParameters(aClass, scope, includeAnonymous, checkInheritance));
|
||||
|
||||
if (!includeAnonymous) {
|
||||
return new FilteredQuery<PsiClass>(raw, new Condition<PsiClass>() {
|
||||
|
||||
Reference in New Issue
Block a user