mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[^ann] show implemented methods popup faster (part of IDEA-155949)
This commit is contained in:
+10
-14
@@ -22,9 +22,9 @@ import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.psi.search.searches.DefinitionsScopedSearch;
|
||||
import com.intellij.psi.search.searches.FunctionalExpressionSearch;
|
||||
import com.intellij.psi.search.searches.OverridingMethodsSearch;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.QueryExecutor;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -42,28 +42,24 @@ public class MethodImplementationsSearch implements QueryExecutor<PsiElement, De
|
||||
|
||||
public static boolean processImplementations(final PsiMethod psiMethod, final Processor<PsiElement> consumer,
|
||||
final SearchScope searchScope) {
|
||||
if (!FunctionalExpressionSearch.search(psiMethod, searchScope).forEach(expression -> {
|
||||
return consumer.process(expression);
|
||||
})) {
|
||||
return false;
|
||||
}
|
||||
List<PsiMethod> methods = new ArrayList<PsiMethod>();
|
||||
getOverridingMethods(psiMethod, methods, searchScope);
|
||||
return ContainerUtil.process(methods, consumer);
|
||||
return processOverridingMethods(psiMethod, searchScope, consumer::process) &&
|
||||
FunctionalExpressionSearch.search(psiMethod, searchScope).forEach((Processor<PsiFunctionalExpression>)consumer::process);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public static void getOverridingMethods(PsiMethod method, List<PsiMethod> list, SearchScope scope) {
|
||||
for (PsiMethod psiMethod : OverridingMethodsSearch.search(method, scope, true)) {
|
||||
list.add(psiMethod);
|
||||
}
|
||||
processOverridingMethods(method, scope, new CommonProcessors.CollectProcessor<>(list));
|
||||
}
|
||||
|
||||
private static boolean processOverridingMethods(PsiMethod method, SearchScope scope, Processor<PsiMethod> processor) {
|
||||
return OverridingMethodsSearch.search(method, scope, true).forEach(processor);
|
||||
}
|
||||
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
@Deprecated
|
||||
public static PsiMethod[] getMethodImplementations(final PsiMethod method, SearchScope scope) {
|
||||
List<PsiMethod> result = new ArrayList<PsiMethod>();
|
||||
|
||||
getOverridingMethods(method, result, scope);
|
||||
processOverridingMethods(method, scope, new CommonProcessors.CollectProcessor<>(result));
|
||||
return result.toArray(new PsiMethod[result.size()]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user