From d72ed2f763487a6c06a304fa9d8aded93c224b27 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 16 Nov 2017 13:35:35 +0100 Subject: [PATCH] create flat union scope in NonClasspathClassFinder --- .../src/com/intellij/psi/NonClasspathClassFinder.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/NonClasspathClassFinder.java b/java/java-psi-impl/src/com/intellij/psi/NonClasspathClassFinder.java index cc025432c9b7..e53d173f84d9 100644 --- a/java/java-psi-impl/src/com/intellij/psi/NonClasspathClassFinder.java +++ b/java/java-psi-impl/src/com/intellij/psi/NonClasspathClassFinder.java @@ -33,6 +33,7 @@ import com.intellij.psi.search.NonClasspathDirectoriesScope; import com.intellij.util.ArrayUtil; import com.intellij.util.CommonProcessors; import com.intellij.util.Processor; +import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.MultiMap; import com.intellij.util.messages.MessageBusConnection; @@ -211,13 +212,16 @@ public abstract class NonClasspathClassFinder extends PsiElementFinder { @NotNull public static GlobalSearchScope addNonClasspathScope(@NotNull Project project, @NotNull GlobalSearchScope base) { - GlobalSearchScope scope = base; + List nonClasspathScopes = new SmartList<>(); for (PsiElementFinder finder : Extensions.getExtensions(EP_NAME, project)) { if (finder instanceof NonClasspathClassFinder) { - scope = scope.uniteWith(NonClasspathDirectoriesScope.compose(((NonClasspathClassFinder)finder).getClassRoots())); + nonClasspathScopes.add(NonClasspathDirectoriesScope.compose(((NonClasspathClassFinder)finder).getClassRoots())); } } - return scope; + if (nonClasspathScopes.isEmpty()) { + return base; + } + return GlobalSearchScope.union(ArrayUtil.prepend(base, nonClasspathScopes.toArray(new GlobalSearchScope[0]))); } public PsiManager getPsiManager() {