directory class inheritance search should not return inheritors of classes with the same short name but different qname

This commit is contained in:
anna
2011-08-31 16:53:40 +02:00
parent fd9a4016b8
commit ef3a1b00a4
3 changed files with 38 additions and 7 deletions
@@ -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>() {