From 05ea6e7d8b4cd13dc499cb90d0b30b8718f1f1e5 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 18 May 2016 17:57:29 +0200 Subject: [PATCH] [^ann] show implemented methods popup faster (part of IDEA-155949) --- .../MethodImplementationsSearch.java | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/java/java-indexing-impl/src/com/intellij/codeInsight/navigation/MethodImplementationsSearch.java b/java/java-indexing-impl/src/com/intellij/codeInsight/navigation/MethodImplementationsSearch.java index fd7c95baa038..7997fbbc8688 100644 --- a/java/java-indexing-impl/src/com/intellij/codeInsight/navigation/MethodImplementationsSearch.java +++ b/java/java-indexing-impl/src/com/intellij/codeInsight/navigation/MethodImplementationsSearch.java @@ -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 consumer, final SearchScope searchScope) { - if (!FunctionalExpressionSearch.search(psiMethod, searchScope).forEach(expression -> { - return consumer.process(expression); - })) { - return false; - } - List methods = new ArrayList(); - getOverridingMethods(psiMethod, methods, searchScope); - return ContainerUtil.process(methods, consumer); + return processOverridingMethods(psiMethod, searchScope, consumer::process) && + FunctionalExpressionSearch.search(psiMethod, searchScope).forEach((Processor)consumer::process); } + @SuppressWarnings("unused") public static void getOverridingMethods(PsiMethod method, List 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 processor) { + return OverridingMethodsSearch.search(method, scope, true).forEach(processor); } @SuppressWarnings("UnusedDeclaration") @Deprecated public static PsiMethod[] getMethodImplementations(final PsiMethod method, SearchScope scope) { List result = new ArrayList(); - - getOverridingMethods(method, result, scope); + processOverridingMethods(method, scope, new CommonProcessors.CollectProcessor<>(result)); return result.toArray(new PsiMethod[result.size()]); } }