diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/MarkerType.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/MarkerType.java index fe948ccf0394..10cbdce60e03 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/MarkerType.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/MarkerType.java @@ -332,7 +332,7 @@ public class MarkerType { ContainerUtil.addIfNotNull(inheritors, collectProcessor.getFoundElement()); ContainerUtil.addIfNotNull(inheritors, collectExprProcessor.getFoundElement()); if (inheritors.isEmpty()) return; - final SubclassUpdater subclassUpdater = new SubclassUpdater(aClass, renderer, inheritors); + final SubclassUpdater subclassUpdater = new SubclassUpdater(aClass, renderer); inheritors.sort(renderer.getComparator()); PsiElementListNavigator.openTargets(e, inheritors.toArray(NavigatablePsiElement.EMPTY_NAVIGATABLE_ELEMENT_ARRAY), subclassUpdater.getCaption(inheritors.size()), CodeInsightBundle.message("goto.implementation.findUsages.title", aClass.getName()), renderer, subclassUpdater); @@ -362,16 +362,10 @@ public class MarkerType { @IntellijInternalApi public static final class SubclassUpdater extends OverridingMembersUpdater { private final PsiClass myClass; - private final List myInheritors; - public SubclassUpdater( - @NotNull PsiClass aClass, - @NotNull PsiElementListCellRenderer renderer, - @NotNull List inheritors - ) { + public SubclassUpdater(@NotNull PsiClass aClass, @NotNull PsiElementListCellRenderer renderer) { super(aClass.getProject(), JavaAnalysisBundle.message("subclasses.search.progress.title"), renderer); myClass = aClass; - myInheritors = inheritors; } @Override @@ -395,20 +389,13 @@ public class MarkerType { @Override public void run(@NotNull final ProgressIndicator indicator) { super.run(indicator); - final Set navigatablePsiElementSet = new HashSet<>(myInheritors); ClassInheritorsSearch.search(myClass, ReadAction.compute(() -> PsiSearchHelper.getInstance(myProject).getUseScope(myClass)), true).forEach( - new CommonProcessors.CollectProcessor<>() { - @Override - public boolean process(final PsiClass o) { - if (!updateComponent(o)) { - indicator.cancel(); - } - ProgressManager.checkCanceled(); - if (navigatablePsiElementSet.add(o)) { - myInheritors.add(o); - } - return super.process(o); + o -> { + if (!updateComponent(o)) { + indicator.cancel(); } + ProgressManager.checkCanceled(); + return true; }); collectFunctionalInheritors(indicator, myClass); diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/SubClassMarker.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/SubClassMarker.kt index 47ba9949f66c..70d19b831dce 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/SubClassMarker.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/SubClassMarker.kt @@ -58,7 +58,7 @@ fun buildNavigateToClassInheritorsPopup(e: MouseEvent?, element: PsiElement?): N inheritors.sortWith(renderer.comparator as Comparator) - val updater = MarkerType.SubclassUpdater(psiClass, renderer, inheritors) + val updater = MarkerType.SubclassUpdater(psiClass, renderer) val className = psiClass.name return NavigationPopupDescriptor(