From d3246c38d6e7cbc1b31fd3f1e2feba89662ecd47 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 27 May 2015 16:41:04 +0200 Subject: [PATCH] JavaDirectInheritorsSearcher: invoke getJarFile less frequently --- .../impl/search/JavaDirectInheritorsSearcher.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaDirectInheritorsSearcher.java b/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaDirectInheritorsSearcher.java index 287d43f4cf2d..acbf02209732 100644 --- a/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaDirectInheritorsSearcher.java +++ b/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaDirectInheritorsSearcher.java @@ -134,8 +134,11 @@ public class JavaDirectInheritorsSearcher implements QueryExecutor sameNamedClasses : classes.values()) { - if (!processSameNamedClasses(consumer, aClass, sameNamedClasses)) return false; + if (!classes.isEmpty()) { + final VirtualFile jarFile = getJarFile(aClass); + for (List sameNamedClasses : classes.values()) { + if (!processSameNamedClasses(consumer, sameNamedClasses, jarFile)) return false; + } } if (p.includeAnonymous()) { @@ -196,12 +199,11 @@ public class JavaDirectInheritorsSearcher implements QueryExecutor consumer, PsiClass aClass, List sameNamedClasses) { + private static boolean processSameNamedClasses(Processor consumer, List sameNamedClasses, final VirtualFile jarFile) { // if there is a class from the same jar, prefer it boolean sameJarClassFound = false; - VirtualFile jarFile = getJarFile(aClass); - if (jarFile != null) { + if (jarFile != null && sameNamedClasses.size() > 1) { for (PsiClass sameNamedClass : sameNamedClasses) { boolean fromSameJar = Comparing.equal(getJarFile(sameNamedClass), jarFile); if (fromSameJar) {