From 00b4a8c803957be74befbe20ad7b37a0429f65d7 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Wed, 21 Dec 2016 21:23:23 +0300 Subject: [PATCH] java method search: create a single request per method when occurrences for overloads are requested (optimize search scopes) (IDEA-165761) --- .../psi/impl/search/MethodUsagesSearcher.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/java/java-indexing-impl/src/com/intellij/psi/impl/search/MethodUsagesSearcher.java b/java/java-indexing-impl/src/com/intellij/psi/impl/search/MethodUsagesSearcher.java index f028723dbabc..3a08325c0e23 100644 --- a/java/java-indexing-impl/src/com/intellij/psi/impl/search/MethodUsagesSearcher.java +++ b/java/java-indexing-impl/src/com/intellij/psi/impl/search/MethodUsagesSearcher.java @@ -89,20 +89,19 @@ public class MethodUsagesSearcher extends QueryExecutorBase { final PsiMethod[] methods = strictSignatureSearch ? new PsiMethod[]{method} : aClass.findMethodsByName(methodName[0], false); + + short searchContext = UsageSearchContext.IN_CODE | UsageSearchContext.IN_COMMENTS | UsageSearchContext.IN_FOREIGN_LANGUAGES; + for (PsiMethod m : methods) { + collector.searchWord(methodName[0], searchScope.intersectWith(m.getUseScope()), searchContext, true, m, + getTextOccurrenceProcessor(new PsiMethod[] {m}, aClass, strictSignatureSearch)); + } + SearchScope accessScope = methods[0].getUseScope(); for (int i = 1; i < methods.length; i++) { PsiMethod method1 = methods[i]; accessScope = accessScope.union(method1.getUseScope()); } - SearchScope restrictedByAccessScope = searchScope.intersectWith(accessScope); - - short searchContext = UsageSearchContext.IN_CODE | UsageSearchContext.IN_COMMENTS | UsageSearchContext.IN_FOREIGN_LANGUAGES; - for (PsiMethod m : methods) { - collector.searchWord(methodName[0], restrictedByAccessScope, searchContext, true, m, - getTextOccurrenceProcessor(new PsiMethod[] {m}, aClass, strictSignatureSearch)); - } - SimpleAccessorReferenceSearcher.addPropertyAccessUsages(method, restrictedByAccessScope, collector); return null; });