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 e9f6b483ad86..ded26be91cc9 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 @@ -160,11 +160,11 @@ public class JavaDirectInheritorsSearcher implements QueryExecutor)baseClass::getName); - if (StringUtil.isEmpty(className)) { + final String baseClassName = ApplicationManager.getApplication().runReadAction((Computable)baseClass::getName); + if (StringUtil.isEmpty(baseClassName)) { return Pair.create(Collections.emptyList(), new AtomicIntegerArray(0)); } - Pair, AtomicIntegerArray> pair = calculateDirectSubClasses(project, baseClass, className); + Pair, AtomicIntegerArray> pair = calculateDirectSubClasses(project, baseClass, baseClassName); HighlightingCaches.getInstance(project).DIRECT_SUB_CLASSES.put(baseClass, pair); return pair; } @@ -172,11 +172,10 @@ public class JavaDirectInheritorsSearcher implements QueryExecutor, AtomicIntegerArray> calculateDirectSubClasses(@NotNull Project project, @NotNull PsiClass baseClass, - @NotNull String className) { + @NotNull String baseClassName) { GlobalSearchScope allScope = GlobalSearchScope.allScope(project); Collection candidates = - MethodUsagesSearcher - .resolveInReadAction(project, () -> JavaSuperClassNameOccurenceIndex.getInstance().get(className, project, allScope)); + MethodUsagesSearcher.resolveInReadAction(project, () -> JavaSuperClassNameOccurenceIndex.getInstance().get(baseClassName, project, allScope)); Map> classes = new HashMap<>(); int count = 0; @@ -196,7 +195,7 @@ public class JavaDirectInheritorsSearcher implements QueryExecutor anonymousCandidates = - MethodUsagesSearcher.resolveInReadAction(project, () -> JavaAnonymousClassBaseRefOccurenceIndex.getInstance().get(className, project, allScope)); + MethodUsagesSearcher.resolveInReadAction(project, () -> JavaAnonymousClassBaseRefOccurenceIndex.getInstance().get(baseClassName, project, allScope)); List result = new ArrayList<>(count + classes.size() + anonymousCandidates.size() + 1); for (Map.Entry> entry : classes.entrySet()) {