mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
use one NonClasspathDirectoriesScope instead of union of per-root scopes
This commit is contained in:
@@ -5,7 +5,7 @@ import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.search.NonClasspathDirectoryScope;
|
||||
import com.intellij.psi.search.NonClasspathDirectoriesScope;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -25,7 +25,7 @@ public class NonClasspathResolveScopeEnlarger extends ResolveScopeEnlarger {
|
||||
final List<VirtualFile> roots = ((NonClasspathClassFinder)finder).getClassRoots();
|
||||
for (VirtualFile root : roots) {
|
||||
if (VfsUtil.isAncestor(root, file, true)) {
|
||||
return NonClasspathDirectoryScope.compose(roots);
|
||||
return NonClasspathDirectoriesScope.compose(roots);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.impl.file.PsiPackageImpl;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.NonClasspathDirectoryScope;
|
||||
import com.intellij.psi.search.NonClasspathDirectoriesScope;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -252,7 +252,7 @@ public abstract class NonClasspathClassFinder extends PsiElementFinder {
|
||||
GlobalSearchScope scope = base;
|
||||
for (PsiElementFinder finder : Extensions.getExtensions(EP_NAME, project)) {
|
||||
if (finder instanceof NonClasspathClassFinder) {
|
||||
scope = scope.uniteWith(NonClasspathDirectoryScope.compose(((NonClasspathClassFinder)finder).getClassRoots()));
|
||||
scope = scope.uniteWith(NonClasspathDirectoriesScope.compose(((NonClasspathClassFinder)finder).getClassRoots()));
|
||||
}
|
||||
}
|
||||
return scope;
|
||||
|
||||
+13
-14
@@ -19,18 +19,21 @@ package com.intellij.psi.search;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
*/
|
||||
public class NonClasspathDirectoryScope extends GlobalSearchScope {
|
||||
private final VirtualFile myRoot;
|
||||
public class NonClasspathDirectoriesScope extends GlobalSearchScope {
|
||||
private final Set<VirtualFile> myRoots;
|
||||
|
||||
public NonClasspathDirectoryScope(@NotNull VirtualFile root) {
|
||||
myRoot = root;
|
||||
public NonClasspathDirectoriesScope(@NotNull Collection<VirtualFile> roots) {
|
||||
myRoots = ContainerUtil.newHashSet(roots);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -44,16 +47,12 @@ public class NonClasspathDirectoryScope extends GlobalSearchScope {
|
||||
return EMPTY_SCOPE;
|
||||
}
|
||||
|
||||
GlobalSearchScope scope = new NonClasspathDirectoryScope(roots.get(0));
|
||||
for (int i = 1; i < roots.size(); i++) {
|
||||
scope = scope.uniteWith(new NonClasspathDirectoryScope(roots.get(i)));
|
||||
}
|
||||
return scope;
|
||||
return new NonClasspathDirectoriesScope(roots);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean contains(@NotNull VirtualFile file) {
|
||||
return VfsUtilCore.isAncestor(myRoot, file, false);
|
||||
return VfsUtilCore.isUnder(file, myRoots);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -74,11 +73,11 @@ public class NonClasspathDirectoryScope extends GlobalSearchScope {
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (!(o instanceof NonClasspathDirectoryScope)) return false;
|
||||
if (!(o instanceof NonClasspathDirectoriesScope)) return false;
|
||||
|
||||
NonClasspathDirectoryScope that = (NonClasspathDirectoryScope)o;
|
||||
NonClasspathDirectoriesScope that = (NonClasspathDirectoriesScope)o;
|
||||
|
||||
if (!myRoot.equals(that.myRoot)) return false;
|
||||
if (!myRoots.equals(that.myRoots)) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -86,7 +85,7 @@ public class NonClasspathDirectoryScope extends GlobalSearchScope {
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = super.hashCode();
|
||||
result = 31 * result + myRoot.hashCode();
|
||||
result = 31 * result + myRoots.hashCode();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -21,7 +21,7 @@ import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiElementFinder;
|
||||
import com.intellij.psi.ResolveScopeEnlarger;
|
||||
import com.intellij.psi.search.NonClasspathDirectoryScope;
|
||||
import com.intellij.psi.search.NonClasspathDirectoriesScope;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.plugins.groovy.GroovyFileType;
|
||||
@@ -42,7 +42,7 @@ public class GradleBuildClasspathResolveScopeEnlarger extends ResolveScopeEnlarg
|
||||
final List<VirtualFile> roots = gradleClassFinder.getClassRoots();
|
||||
for (VirtualFile root : roots) {
|
||||
if (VfsUtilCore.isAncestor(root, file, true)) {
|
||||
return NonClasspathDirectoryScope.compose(roots);
|
||||
return NonClasspathDirectoriesScope.compose(roots);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.NonClasspathDirectoryScope;
|
||||
import com.intellij.psi.search.NonClasspathDirectoriesScope;
|
||||
import icons.GradleIcons;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -52,7 +52,6 @@ import org.jetbrains.plugins.gradle.service.resolve.GradleResolverUtil;
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants;
|
||||
import org.jetbrains.plugins.groovy.config.GroovyConfigUtils;
|
||||
import org.jetbrains.plugins.groovy.extensions.GroovyRunnableScriptType;
|
||||
import org.jetbrains.plugins.groovy.extensions.GroovyScriptType;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrApplicationStatement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression;
|
||||
@@ -332,10 +331,7 @@ public class GradleScriptType extends GroovyRunnableScriptType {
|
||||
|
||||
files = GradleBuildClasspathManager.getInstance(file.getProject()).getModuleClasspathEntries(modulePath);
|
||||
|
||||
for (final VirtualFile root : files) {
|
||||
result = result.uniteWith(new NonClasspathDirectoryScope(root));
|
||||
}
|
||||
result = new ExternalModuleBuildGlobalSearchScope(module.getProject(), result, modulePath);
|
||||
result = new ExternalModuleBuildGlobalSearchScope(module.getProject(), result.uniteWith(new NonClasspathDirectoriesScope(files)), modulePath);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -20,12 +20,12 @@ import com.intellij.compiler.options.CompileStepBeforeRunNoErrorCheck;
|
||||
import com.intellij.execution.Location;
|
||||
import com.intellij.execution.RunManagerEx;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleUtil;
|
||||
import com.intellij.openapi.module.ModuleUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.NonClasspathDirectoryScope;
|
||||
import com.intellij.psi.search.NonClasspathDirectoriesScope;
|
||||
import icons.JetgroovyIcons;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -104,7 +104,7 @@ public class GantScriptType extends GroovyRunnableScriptType {
|
||||
}
|
||||
|
||||
public static List<VirtualFile> additionalScopeFiles(@NotNull GroovyFile file) {
|
||||
final Module module = ModuleUtil.findModuleForPsiElement(file);
|
||||
final Module module = ModuleUtilCore.findModuleForPsiElement(file);
|
||||
if (module != null) {
|
||||
final String sdkHome = GantUtils.getSdkHomeFromClasspath(module);
|
||||
if (sdkHome != null) {
|
||||
@@ -123,10 +123,6 @@ public class GantScriptType extends GroovyRunnableScriptType {
|
||||
|
||||
@Override
|
||||
public GlobalSearchScope patchResolveScope(@NotNull GroovyFile file, @NotNull GlobalSearchScope baseScope) {
|
||||
GlobalSearchScope result = baseScope;
|
||||
for (final VirtualFile root : additionalScopeFiles(file)) {
|
||||
result = result.uniteWith(new NonClasspathDirectoryScope(root));
|
||||
}
|
||||
return result;
|
||||
return baseScope.uniteWith(new NonClasspathDirectoriesScope(additionalScopeFiles(file)));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user