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 c51e58e7fe4d..ec426424a929 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 @@ -48,11 +48,8 @@ public class JavaDirectInheritorsSearcher implements QueryExecutor { ProgressManager.checkCanceled(); - if (psiClass.isInterface()) { - return consumer.process(psiClass); - } - final PsiClass superClass = psiClass.getSuperClass(); - return superClass == null || !JavaClassInheritorsSearcher.isJavaLangObject(superClass) || consumer.process(psiClass); + if (shortCircuitCandidate(psiClass)) return true; + return consumer.process(psiClass); }); } @@ -116,6 +113,20 @@ public class JavaDirectInheritorsSearcher implements QueryExecutor { + if (psiClass.isInterface()) { + return false; + } + final PsiClass superClass = psiClass.getSuperClass(); + if (superClass == null || !superClass.isValid()) { + return true; + } + boolean isJavaLangObject = CommonClassNames.JAVA_LANG_OBJECT.equals(superClass.getQualifiedName()); + return !isJavaLangObject; + }); + } private static PsiClass getClassToSearch(@NotNull DirectClassInheritorsSearch.SearchParameters parameters) { return ReadAction.compute(() -> (PsiClass)PsiUtil.preferCompiledElement(parameters.getClassToProcess())); }