From 4cc4d7dc84ac134ff95ada08534279c9ca6f9f41 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 15 Aug 2019 19:15:43 +0300 Subject: [PATCH] EA-210048 - assert: LazyParseableElement.ensureParsed GitOrigin-RevId: a0385b5b6d95e567986eda72fae235b0c85e8c90 --- .../search/JavaDirectInheritorsSearcher.java | 21 ++++++++++++++----- 1 file changed, 16 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 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())); }