From 9bed95b4317ddee2727f3c33ad08f4afdd5fc6df Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Wed, 21 May 2025 16:04:42 +0200 Subject: [PATCH] [java-psi] PsiElementFinderImpl.getClasses: sort by name first Sorting by scope might be slow and appears sometimes in profiles May improve IJPL-181700 com.intellij.codeInsight.daemon.impl.HighlightVisitorRunner.runVisitor holds read lock for 700ms during typing processing GitOrigin-RevId: 9342af5afa24a730711f25b2010f51aff54f85ef --- .../src/com/intellij/psi/impl/PsiElementFinderImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFinderImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFinderImpl.java index fa441a00418a..8402aa457246 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFinderImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFinderImpl.java @@ -117,7 +117,12 @@ public final class PsiElementFinderImpl extends PsiElementFinder implements Dumb } if (list.size() > 1) { - ContainerUtil.quickSort(list, PsiClassUtil.createScopeComparator(scope)); + if (shortName != null) { + ContainerUtil.quickSort(list, PsiClassUtil.createScopeComparator(scope)); + } else { + ContainerUtil.quickSort(list, Comparator.comparing(PsiClass::getName, Comparator.nullsLast(Comparator.naturalOrder())) + .thenComparing(PsiClassUtil.createScopeComparator(scope))); + } } return list.toArray(PsiClass.EMPTY_ARRAY);