mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
take nameCondition into account for direct subclass search, deprecations
This commit is contained in:
@@ -21,11 +21,13 @@ import com.intellij.codeInsight.completion.JavaCompletionUtil;
|
||||
import com.intellij.codeInsight.completion.PrefixMatcher;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.lang.StdLanguages;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
@@ -297,10 +299,13 @@ public class CodeInsightUtil {
|
||||
}
|
||||
return true;
|
||||
});
|
||||
} else {
|
||||
Query<PsiClass> baseQuery = ClassInheritorsSearch.search(
|
||||
new ClassInheritorsSearch.SearchParameters(baseClass, scope, true, true, false, matcher::prefixMatches));
|
||||
Query<PsiClass> query = new FilteredQuery<>(baseQuery, psiClass -> !(psiClass instanceof PsiTypeParameter));
|
||||
}
|
||||
else {
|
||||
Query<PsiClass> baseQuery = ClassInheritorsSearch.search(baseClass, scope, true, true, false);
|
||||
Query<PsiClass> query = new FilteredQuery<>(baseQuery, psiClass -> {
|
||||
String name = ApplicationManager.getApplication().runReadAction((Computable<String>)psiClass::getName);
|
||||
return !(psiClass instanceof PsiTypeParameter) && name != null && matcher.prefixMatches(name);
|
||||
});
|
||||
query.forEach(inheritorsProcessor);
|
||||
}
|
||||
}
|
||||
|
||||
+9
-4
@@ -26,6 +26,7 @@ import com.intellij.psi.SmartPointerManager;
|
||||
import com.intellij.psi.SmartPsiElementPointer;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.util.AbstractQuery;
|
||||
import com.intellij.util.FilteredQuery;
|
||||
import com.intellij.util.Query;
|
||||
import com.intellij.util.QueryExecutor;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -135,8 +136,12 @@ public class ClassInheritorsSearch extends ExtensibleQueryFactory<PsiClass, Clas
|
||||
@NotNull
|
||||
public static Query<PsiClass> search(@NotNull SearchParameters parameters) {
|
||||
if (!parameters.isCheckDeep()) {
|
||||
return AbstractQuery.wrapInReadAction(DirectClassInheritorsSearch.search(parameters.getClassToProcess(), parameters.getScope(), parameters.isIncludeAnonymous(),
|
||||
parameters.isCheckInheritance()));
|
||||
Query<PsiClass> directQuery = DirectClassInheritorsSearch.search(parameters.getClassToProcess(), parameters.getScope(), parameters.isIncludeAnonymous());
|
||||
if (parameters.getNameCondition() != Conditions.<String>alwaysTrue()) {
|
||||
directQuery = new FilteredQuery<>(directQuery, psiClass -> parameters.getNameCondition()
|
||||
.value(ApplicationManager.getApplication().runReadAction((Computable<String>)psiClass::getName)));
|
||||
}
|
||||
return AbstractQuery.wrapInReadAction(directQuery);
|
||||
}
|
||||
return INSTANCE.createUniqueResultsQuery(parameters, ContainerUtil.canonicalStrategy(),
|
||||
psiClass -> ApplicationManager.getApplication().runReadAction((Computable<SmartPsiElementPointer<PsiClass>>)() -> SmartPointerManager.getInstance(psiClass.getProject()).createSmartPsiElementPointer(psiClass)));
|
||||
@@ -145,7 +150,7 @@ public class ClassInheritorsSearch extends ExtensibleQueryFactory<PsiClass, Clas
|
||||
@NotNull
|
||||
@Deprecated //todo to be removed in IDEA 17
|
||||
/**
|
||||
* @deprecated use {@link #search(com.intellij.psi.PsiClass, com.intellij.psi.search.SearchScope, boolean)} instead
|
||||
* @deprecated use {@link #search(PsiClass, SearchScope, boolean)} instead
|
||||
*/
|
||||
public static Query<PsiClass> search(@NotNull final PsiClass aClass, @NotNull SearchScope scope, final boolean checkDeep, final boolean checkInheritance) {
|
||||
return search(aClass, scope, checkDeep, checkInheritance, true);
|
||||
@@ -153,7 +158,7 @@ public class ClassInheritorsSearch extends ExtensibleQueryFactory<PsiClass, Clas
|
||||
|
||||
@NotNull
|
||||
public static Query<PsiClass> search(@NotNull final PsiClass aClass, @NotNull SearchScope scope, final boolean checkDeep) {
|
||||
return search(aClass, scope, checkDeep, true);
|
||||
return search(aClass, scope, checkDeep, true, true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
Reference in New Issue
Block a user