extract ResolveScopeManager out of FileManagerImpl

This commit is contained in:
Dmitry Jemerov
2011-09-01 20:16:22 +02:00
parent 04469b7544
commit 295a7da23b
19 changed files with 249 additions and 191 deletions

View File

@@ -24,6 +24,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.filters.OrFilter;
import com.intellij.psi.impl.compiled.ClsElementImpl;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.impl.source.PsiImmediateClassType;
import com.intellij.psi.infos.MethodCandidateInfo;
import com.intellij.psi.scope.ElementClassFilter;
@@ -307,7 +308,7 @@ public class PsiClassImplUtil {
}
public static SearchScope getClassUseScope(final PsiClass aClass) {
final GlobalSearchScope maximalUseScope = ((PsiManagerEx) aClass.getManager()).getFileManager().getUseScope(aClass);
final GlobalSearchScope maximalUseScope = ResolveScopeManager.getElementUseScope(aClass);
if (aClass instanceof PsiAnonymousClass) {
return new LocalSearchScope(aClass);
}

View File

@@ -22,6 +22,7 @@ import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.filters.ElementFilter;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.impl.light.LightClassReference;
import com.intellij.psi.impl.source.PsiClassReferenceType;
import com.intellij.psi.impl.source.PsiImmediateClassType;
@@ -348,8 +349,7 @@ public class PsiImplUtil {
@NotNull
public static SearchScope getMemberUseScope(@NotNull PsiMember member) {
final PsiManagerEx psiManager = (PsiManagerEx)member.getManager();
final GlobalSearchScope maximalUseScope = psiManager.getFileManager().getUseScope(member);
final GlobalSearchScope maximalUseScope = ResolveScopeManager.getElementUseScope(member);
PsiFile file = member.getContainingFile();
if (JspPsiUtil.isInJspFile(file)) return maximalUseScope;
@@ -372,7 +372,7 @@ public class PsiImplUtil {
}
else {
if (file instanceof PsiJavaFile) {
PsiPackage aPackage = JavaPsiFacade.getInstance(psiManager.getProject()).findPackage(((PsiJavaFile)file).getPackageName());
PsiPackage aPackage = JavaPsiFacade.getInstance(member.getProject()).findPackage(((PsiJavaFile)file).getPackageName());
if (aPackage != null) {
SearchScope scope = PackageScope.packageScope(aPackage, false);
scope = scope.intersectWith(maximalUseScope);

View File

@@ -23,6 +23,7 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.*;
import com.intellij.psi.impl.PsiManagerEx;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.impl.source.tree.JavaElementType;
import com.intellij.psi.impl.source.tree.LeafElement;
import com.intellij.psi.impl.source.tree.TreeElement;
@@ -83,7 +84,7 @@ public class PsiLiteralExpressionImpl
}
if (type == JavaTokenType.STRING_LITERAL) {
PsiManagerEx manager = getManager();
GlobalSearchScope resolveScope = manager.getFileManager().getResolveScope(this);
GlobalSearchScope resolveScope = ResolveScopeManager.getElementResolveScope(this);
return PsiType.getJavaLangString(manager, resolveScope);
}
if (type == JavaTokenType.TRUE_KEYWORD || type == JavaTokenType.FALSE_KEYWORD) {

View File

@@ -20,6 +20,7 @@ import com.intellij.navigation.ItemPresentation;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.psi.*;
import com.intellij.psi.impl.*;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.impl.source.Constants;
import com.intellij.psi.impl.source.JavaDummyHolder;
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
@@ -321,7 +322,7 @@ public class PsiLocalVariableImpl extends CompositePsiElement implements PsiLoca
return new LocalSearchScope(parentElement.getParent());
}
else {
return getManager().getFileManager().getUseScope(this);
return ResolveScopeManager.getElementUseScope(this);
}
}

View File

@@ -27,6 +27,7 @@ import com.intellij.psi.*;
import com.intellij.psi.impl.ElementBase;
import com.intellij.psi.impl.PsiManagerEx;
import com.intellij.psi.impl.SharedPsiElementImplUtil;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.impl.source.tree.SharedImplUtil;
import com.intellij.psi.scope.PsiScopeProcessor;
import com.intellij.psi.search.GlobalSearchScope;
@@ -180,12 +181,12 @@ public abstract class PsiElementBase extends ElementBase implements NavigatableP
@NotNull
public GlobalSearchScope getResolveScope() {
return ((PsiManagerEx)getManager()).getFileManager().getResolveScope(this);
return ResolveScopeManager.getElementResolveScope(this);
}
@NotNull
public SearchScope getUseScope() {
return ((PsiManagerEx) getManager()).getFileManager().getUseScope(this);
return ResolveScopeManager.getElementUseScope(this);
}
/**

View File

@@ -20,8 +20,8 @@ package com.intellij.psi.impl;
import com.intellij.ide.util.EditSourceUtil;
import com.intellij.navigation.ItemPresentation;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.FileStatus;
import com.intellij.psi.*;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.scope.PsiScopeProcessor;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.SearchScope;
@@ -113,12 +113,12 @@ public abstract class PsiElementBase extends ElementBase implements PsiElement {
@NotNull
public final GlobalSearchScope getResolveScope() {
return ((PsiManagerEx)getManager()).getFileManager().getResolveScope(this);
return ResolveScopeManager.getElementResolveScope(this);
}
@NotNull
public SearchScope getUseScope() {
return ((PsiManagerEx) getManager()).getFileManager().getUseScope(this);
return ResolveScopeManager.getElementUseScope(this);
}
public void navigate(boolean requestFocus) {

View File

@@ -19,9 +19,7 @@ package com.intellij.psi.impl.file.impl;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.FileViewProvider;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
@@ -44,9 +42,6 @@ public interface FileManager {
@Nullable
PsiFile getCachedPsiFile(@NotNull VirtualFile vFile);
@NotNull GlobalSearchScope getResolveScope(@NotNull PsiElement element);
@NotNull GlobalSearchScope getUseScope(@NotNull PsiElement element);
@TestOnly
void cleanupForNextTest();

View File

@@ -28,13 +28,12 @@ import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileEditor.FileDocumentManagerAdapter;
import com.intellij.openapi.fileTypes.*;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ex.ProjectEx;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.roots.ex.ProjectRootManagerEx;
import com.intellij.openapi.roots.ModuleRootEvent;
import com.intellij.openapi.roots.ModuleRootListener;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.impl.PsiFileEx;
@@ -42,12 +41,7 @@ import com.intellij.psi.impl.PsiManagerImpl;
import com.intellij.psi.impl.PsiTreeChangeEventImpl;
import com.intellij.psi.impl.file.PsiDirectoryFactory;
import com.intellij.psi.impl.source.PsiFileImpl;
import com.intellij.psi.impl.source.resolve.FileContextUtil;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.psi.search.SearchScope;
import com.intellij.util.ConcurrencyUtil;
import com.intellij.util.containers.ConcurrentFactoryMap;
import com.intellij.util.containers.ConcurrentSoftValueHashMap;
import com.intellij.util.containers.ConcurrentWeakValueHashMap;
import com.intellij.util.messages.MessageBusConnection;
@@ -71,27 +65,6 @@ public class FileManagerImpl implements FileManager {
private final ConcurrentMap<VirtualFile, PsiDirectory> myVFileToPsiDirMap = new ConcurrentSoftValueHashMap<VirtualFile, PsiDirectory>();
private final ConcurrentWeakValueHashMap<VirtualFile, FileViewProvider> myVFileToViewProviderMap = new ConcurrentWeakValueHashMap<VirtualFile, FileViewProvider>();
private final Map<VirtualFile, GlobalSearchScope> myDefaultResolveScopesCache = new ConcurrentFactoryMap<VirtualFile, GlobalSearchScope>() {
@Override
protected GlobalSearchScope create(VirtualFile key) {
final Project project = myManager.getProject();
GlobalSearchScope scope = null;
for(ResolveScopeProvider resolveScopeProvider:ResolveScopeProvider.EP_NAME.getExtensions()) {
scope = resolveScopeProvider.getResolveScope(key, project);
if (scope != null) break;
}
if (scope == null) scope = getInherentResolveScope(key);
for (ResolveScopeEnlarger enlarger : ResolveScopeEnlarger.EP_NAME.getExtensions()) {
final SearchScope extra = enlarger.getAdditionalResolveScope(key, project);
if (extra != null) {
scope = scope.union(extra);
}
}
return scope;
}
};
private boolean myInitialized = false;
private boolean myDisposed = false;
@@ -117,13 +90,6 @@ public class FileManagerImpl implements FileManager {
recalcAllViewProviders();
}
});
manager.registerRunnableToRunOnChange(new Runnable() {
@Override
public void run() {
myDefaultResolveScopesCache.clear();
}
});
}
public void processQueue() {
@@ -357,122 +323,6 @@ public class FileManagerImpl implements FileManager {
return getCachedPsiFileInner(vFile);
}
@NotNull
public GlobalSearchScope getResolveScope(@NotNull PsiElement element) {
ProgressManager.checkCanceled();
VirtualFile vFile;
final Project project = myManager.getProject();
final PsiFile contextFile;
if (element instanceof PsiDirectory) {
vFile = ((PsiDirectory)element).getVirtualFile();
contextFile = null;
}
else {
final PsiFile containingFile = element.getContainingFile();
if (containingFile instanceof PsiCodeFragment) {
final GlobalSearchScope forcedScope = ((PsiCodeFragment)containingFile).getForcedResolveScope();
if (forcedScope != null) {
return forcedScope;
}
final PsiElement context = containingFile.getContext();
if (context == null) {
return GlobalSearchScope.allScope(project);
}
return getResolveScope(context);
}
contextFile = containingFile != null ? FileContextUtil.getContextFile(containingFile) : null;
if (contextFile == null) {
return GlobalSearchScope.allScope(project);
}
else if (contextFile instanceof FileResolveScopeProvider) {
return ((FileResolveScopeProvider) contextFile).getFileResolveScope();
}
vFile = contextFile.getOriginalFile().getVirtualFile();
}
if (vFile == null || contextFile == null) {
return GlobalSearchScope.allScope(project);
}
return getDefaultResolveScope(project, contextFile, vFile);
}
public GlobalSearchScope getDefaultResolveScope(final VirtualFile vFile) {
final Project project = myManager.getProject();
final PsiFile psiFile = PsiManager.getInstance(project).findFile(vFile);
assert psiFile != null;
return getDefaultResolveScope(project, psiFile, vFile);
}
private GlobalSearchScope getDefaultResolveScope(@NotNull final Project project, @NotNull PsiFile psiFile, @NotNull final VirtualFile vFile) {
return myDefaultResolveScopesCache.get(vFile);
}
private GlobalSearchScope getInherentResolveScope(VirtualFile vFile) {
ProjectFileIndex projectFileIndex = myProjectRootManager.getFileIndex();
Module module = projectFileIndex.getModuleForFile(vFile);
if (module != null) {
boolean includeTests = projectFileIndex.isInTestSourceContent(vFile) ||
!projectFileIndex.isContentJavaSourceFile(vFile);
return GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module, includeTests);
}
else {
// resolve references in libraries in context of all modules which contain it
List<Module> modulesLibraryUsedIn = new ArrayList<Module>();
List<OrderEntry> orderEntries = projectFileIndex.getOrderEntriesForFile(vFile);
for (OrderEntry entry : orderEntries) {
ProgressManager.checkCanceled();
if (entry instanceof JdkOrderEntry) {
return ((ProjectRootManagerEx)myProjectRootManager).getScopeForJdk((JdkOrderEntry)entry);
}
if (entry instanceof LibraryOrderEntry || entry instanceof ModuleOrderEntry) {
modulesLibraryUsedIn.add(entry.getOwnerModule());
}
}
return ((ProjectRootManagerEx)myProjectRootManager).getScopeForLibraryUsedIn(modulesLibraryUsedIn);
}
}
@NotNull
public GlobalSearchScope getUseScope(@NotNull PsiElement element) {
VirtualFile vFile;
final GlobalSearchScope allScope = GlobalSearchScope.allScope(myManager.getProject());
if (element instanceof PsiDirectory) {
vFile = ((PsiDirectory)element).getVirtualFile();
}
else {
final PsiFile containingFile = element.getContainingFile();
if (containingFile == null) return allScope;
final VirtualFile virtualFile = containingFile.getVirtualFile();
if (virtualFile == null) return allScope;
vFile = virtualFile.getParent();
}
if (vFile == null) return allScope;
ProjectFileIndex projectFileIndex = myProjectRootManager.getFileIndex();
Module module = projectFileIndex.getModuleForFile(vFile);
if (module != null) {
boolean isTest = projectFileIndex.isInTestSourceContent(vFile);
return isTest
? GlobalSearchScope.moduleTestsWithDependentsScope(module)
: GlobalSearchScope.moduleWithDependentsScope(module);
}
else {
final PsiFile f = element.getContainingFile();
final VirtualFile vf = f == null ? null : f.getVirtualFile();
return f == null || vf == null || vf.isDirectory() || allScope.contains(vf)
? allScope : GlobalSearchScopes.fileScope(f).uniteWith(allScope);
}
}
@Nullable
public PsiDirectory findDirectory(@NotNull VirtualFile vFile) {
LOG.assertTrue(myInitialized, "Access to psi files should be performed only after startup activity");

View File

@@ -0,0 +1,202 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.psi.impl.file.impl;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.roots.ex.ProjectRootManagerEx;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.impl.PsiManagerImpl;
import com.intellij.psi.impl.source.resolve.FileContextUtil;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopes;
import com.intellij.psi.search.SearchScope;
import com.intellij.util.containers.ConcurrentFactoryMap;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ResolveScopeManager {
public static ResolveScopeManager getInstance(Project project) {
return ServiceManager.getService(project, ResolveScopeManager.class);
}
public static GlobalSearchScope getElementUseScope(PsiElement element) {
return getInstance(element.getProject()).getUseScope(element);
}
public static GlobalSearchScope getElementResolveScope(PsiElement element) {
return getInstance(element.getProject()).getResolveScope(element);
}
private final Project myProject;
private final ProjectRootManager myProjectRootManager;
private final PsiManager myManager;
private final Map<VirtualFile, GlobalSearchScope> myDefaultResolveScopesCache = new ConcurrentFactoryMap<VirtualFile, GlobalSearchScope>() {
@Override
protected GlobalSearchScope create(VirtualFile key) {
GlobalSearchScope scope = null;
for(ResolveScopeProvider resolveScopeProvider: ResolveScopeProvider.EP_NAME.getExtensions()) {
scope = resolveScopeProvider.getResolveScope(key, myProject);
if (scope != null) break;
}
if (scope == null) scope = getInherentResolveScope(key);
for (ResolveScopeEnlarger enlarger : ResolveScopeEnlarger.EP_NAME.getExtensions()) {
final SearchScope extra = enlarger.getAdditionalResolveScope(key, myProject);
if (extra != null) {
scope = scope.union(extra);
}
}
return scope;
}
};
public ResolveScopeManager(Project project, ProjectRootManager projectRootManager, PsiManager psiManager) {
myProject = project;
myProjectRootManager = projectRootManager;
myManager = psiManager;
((PsiManagerImpl) psiManager).registerRunnableToRunOnChange(new Runnable() {
@Override
public void run() {
myDefaultResolveScopesCache.clear();
}
});
}
private GlobalSearchScope getDefaultResolveScope(@NotNull PsiFile psiFile, @NotNull final VirtualFile vFile) {
return myDefaultResolveScopesCache.get(vFile);
}
private GlobalSearchScope getInherentResolveScope(VirtualFile vFile) {
ProjectFileIndex projectFileIndex = myProjectRootManager.getFileIndex();
Module module = projectFileIndex.getModuleForFile(vFile);
if (module != null) {
boolean includeTests = projectFileIndex.isInTestSourceContent(vFile) ||
!projectFileIndex.isContentJavaSourceFile(vFile);
return GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module, includeTests);
}
else {
// resolve references in libraries in context of all modules which contain it
List<Module> modulesLibraryUsedIn = new ArrayList<Module>();
List<OrderEntry> orderEntries = projectFileIndex.getOrderEntriesForFile(vFile);
for (OrderEntry entry : orderEntries) {
ProgressManager.checkCanceled();
if (entry instanceof JdkOrderEntry) {
return ((ProjectRootManagerEx)myProjectRootManager).getScopeForJdk((JdkOrderEntry)entry);
}
if (entry instanceof LibraryOrderEntry || entry instanceof ModuleOrderEntry) {
modulesLibraryUsedIn.add(entry.getOwnerModule());
}
}
return ((ProjectRootManagerEx)myProjectRootManager).getScopeForLibraryUsedIn(modulesLibraryUsedIn);
}
}
@NotNull
public GlobalSearchScope getResolveScope(@NotNull PsiElement element) {
ProgressManager.checkCanceled();
VirtualFile vFile;
final PsiFile contextFile;
if (element instanceof PsiDirectory) {
vFile = ((PsiDirectory)element).getVirtualFile();
contextFile = null;
}
else {
final PsiFile containingFile = element.getContainingFile();
if (containingFile instanceof PsiCodeFragment) {
final GlobalSearchScope forcedScope = ((PsiCodeFragment)containingFile).getForcedResolveScope();
if (forcedScope != null) {
return forcedScope;
}
final PsiElement context = containingFile.getContext();
if (context == null) {
return GlobalSearchScope.allScope(myProject);
}
return getResolveScope(context);
}
contextFile = containingFile != null ? FileContextUtil.getContextFile(containingFile) : null;
if (contextFile == null) {
return GlobalSearchScope.allScope(myProject);
}
else if (contextFile instanceof FileResolveScopeProvider) {
return ((FileResolveScopeProvider) contextFile).getFileResolveScope();
}
vFile = contextFile.getOriginalFile().getVirtualFile();
}
if (vFile == null || contextFile == null) {
return GlobalSearchScope.allScope(myProject);
}
return getDefaultResolveScope(contextFile, vFile);
}
public GlobalSearchScope getDefaultResolveScope(final VirtualFile vFile) {
final PsiFile psiFile = myManager.findFile(vFile);
assert psiFile != null;
return getDefaultResolveScope(psiFile, vFile);
}
@NotNull
public GlobalSearchScope getUseScope(@NotNull PsiElement element) {
VirtualFile vFile;
final GlobalSearchScope allScope = GlobalSearchScope.allScope(myManager.getProject());
if (element instanceof PsiDirectory) {
vFile = ((PsiDirectory)element).getVirtualFile();
}
else {
final PsiFile containingFile = element.getContainingFile();
if (containingFile == null) return allScope;
final VirtualFile virtualFile = containingFile.getVirtualFile();
if (virtualFile == null) return allScope;
vFile = virtualFile.getParent();
}
if (vFile == null) return allScope;
ProjectFileIndex projectFileIndex = myProjectRootManager.getFileIndex();
Module module = projectFileIndex.getModuleForFile(vFile);
if (module != null) {
boolean isTest = projectFileIndex.isInTestSourceContent(vFile);
return isTest
? GlobalSearchScope.moduleTestsWithDependentsScope(module)
: GlobalSearchScope.moduleWithDependentsScope(module);
}
else {
final PsiFile f = element.getContainingFile();
final VirtualFile vf = f == null ? null : f.getVirtualFile();
return f == null || vf == null || vf.isDirectory() || allScope.contains(vf)
? allScope : GlobalSearchScopes.fileScope(f).uniteWith(allScope);
}
}
}

View File

@@ -28,6 +28,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.impl.*;
import com.intellij.psi.impl.file.PsiFileImplUtil;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.impl.source.resolve.FileContextUtil;
import com.intellij.psi.search.PsiElementProcessor;
import com.intellij.psi.search.SearchScope;
@@ -210,7 +211,7 @@ public abstract class LightPsiFileImpl extends PsiElementBase implements PsiFile
@NotNull
public SearchScope getUseScope() {
return ((PsiManagerEx) getManager()).getFileManager().getUseScope(this);
return ResolveScopeManager.getElementUseScope(this);
}
public void navigate(boolean requestFocus) {

View File

@@ -28,7 +28,6 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.project.Project;
@@ -36,13 +35,13 @@ import com.intellij.openapi.ui.Queryable;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vcs.FileStatus;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileWithId;
import com.intellij.psi.*;
import com.intellij.psi.impl.*;
import com.intellij.psi.impl.cache.impl.CacheUtil;
import com.intellij.psi.impl.file.PsiFileImplUtil;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
import com.intellij.psi.impl.source.resolve.FileContextUtil;
import com.intellij.psi.impl.source.tree.*;
@@ -818,12 +817,12 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF
@NotNull
public GlobalSearchScope getResolveScope() {
return ((PsiManagerEx)getManager()).getFileManager().getResolveScope(this);
return ResolveScopeManager.getElementResolveScope(this);
}
@NotNull
public SearchScope getUseScope() {
return ((PsiManagerEx) getManager()).getFileManager().getUseScope(this);
return ResolveScopeManager.getElementUseScope(this);
}
public ItemPresentation getPresentation() {

View File

@@ -26,6 +26,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.impl.CheckUtil;
import com.intellij.psi.impl.SharedPsiElementImplUtil;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.impl.source.PsiElementArrayConstructor;
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
@@ -212,12 +213,12 @@ public abstract class CompositePsiElement extends CompositeElement implements Ps
@NotNull
public GlobalSearchScope getResolveScope() {
return getManager().getFileManager().getResolveScope(this);
return ResolveScopeManager.getElementResolveScope(this);
}
@NotNull
public SearchScope getUseScope() {
return getManager().getFileManager().getUseScope(this);
return ResolveScopeManager.getElementUseScope(this);
}
public ItemPresentation getPresentation() {

View File

@@ -26,10 +26,10 @@ import com.intellij.navigation.ItemPresentation;
import com.intellij.navigation.NavigationItem;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.FileStatus;
import com.intellij.psi.*;
import com.intellij.psi.impl.CheckUtil;
import com.intellij.psi.impl.SharedPsiElementImplUtil;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.impl.source.PsiElementArrayConstructor;
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
@@ -241,12 +241,12 @@ public class LazyParseablePsiElement extends LazyParseableElement implements Psi
@NotNull
public GlobalSearchScope getResolveScope() {
assert isValid();
return getManager().getFileManager().getResolveScope(this);
return ResolveScopeManager.getElementResolveScope(this);
}
@NotNull
public SearchScope getUseScope() {
return getManager().getFileManager().getUseScope(this);
return ResolveScopeManager.getElementUseScope(this);
}
public ItemPresentation getPresentation() {

View File

@@ -25,11 +25,11 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.FileStatus;
import com.intellij.pom.Navigatable;
import com.intellij.psi.*;
import com.intellij.psi.impl.CheckUtil;
import com.intellij.psi.impl.SharedPsiElementImplUtil;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
import com.intellij.psi.scope.PsiScopeProcessor;
import com.intellij.psi.search.GlobalSearchScope;
@@ -216,12 +216,12 @@ public class LeafPsiElement extends LeafElement implements PsiElement, Navigatio
@NotNull
public GlobalSearchScope getResolveScope() {
return getManager().getFileManager().getResolveScope(this);
return ResolveScopeManager.getElementResolveScope(this);
}
@NotNull
public SearchScope getUseScope() {
return getManager().getFileManager().getUseScope(this);
return ResolveScopeManager.getElementUseScope(this);
}
@NotNull

View File

@@ -23,6 +23,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.impl.CheckUtil;
import com.intellij.psi.impl.SharedPsiElementImplUtil;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
import com.intellij.psi.scope.PsiScopeProcessor;
import com.intellij.psi.search.GlobalSearchScope;
@@ -193,12 +194,12 @@ public class OwnBufferLeafPsiElement extends LeafElement implements PsiElement {
@NotNull
public GlobalSearchScope getResolveScope() {
return getManager().getFileManager().getResolveScope(this);
return ResolveScopeManager.getElementResolveScope(this);
}
@NotNull
public SearchScope getUseScope() {
return getManager().getFileManager().getUseScope(this);
return ResolveScopeManager.getElementUseScope(this);
}
@NotNull

View File

@@ -275,6 +275,8 @@
<projectService serviceInterface="com.intellij.psi.impl.cache.CacheManager"
serviceImplementation="com.intellij.psi.impl.cache.impl.IndexCacheManagerImpl"/>
<projectService serviceInterface="com.intellij.psi.impl.file.impl.ResolveScopeManager"
serviceImplementation="com.intellij.psi.impl.file.impl.ResolveScopeManager"/>
<colorSettingsPage implementation="com.intellij.openapi.options.colors.pages.GeneralColorsPage" id="general"/>
<colorSettingsPage implementation="com.intellij.openapi.options.colors.pages.ANSIColoredConsoleColorsPage" id="general"/>

View File

@@ -18,7 +18,7 @@ package org.jetbrains.plugins.groovy.lang.psi.impl.search;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiModifier;
import com.intellij.psi.impl.PsiManagerEx;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.SearchScope;
import com.intellij.psi.search.UseScopeEnlarger;
@@ -31,8 +31,7 @@ public class GrPrivateFieldScopeEnlarger extends UseScopeEnlarger {
@Override
public SearchScope getAdditionalUseScope(@NotNull PsiElement element) {
if (element instanceof PsiField && ((PsiField)element).hasModifierProperty(PsiModifier.PRIVATE)) {
final PsiManagerEx psiManager = (PsiManagerEx)element.getManager();
final GlobalSearchScope maximalUseScope = psiManager.getFileManager().getUseScope(element);
final GlobalSearchScope maximalUseScope = ResolveScopeManager.getElementUseScope(element);
return new GrSourceFilterScope(maximalUseScope);
}

View File

@@ -19,6 +19,7 @@ import com.intellij.lang.ASTNode;
import com.intellij.navigation.ItemPresentation;
import com.intellij.psi.*;
import com.intellij.psi.impl.PsiImplUtil;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.presentation.java.JavaPresentationUtil;
import com.intellij.psi.search.SearchScope;
import com.intellij.psi.stubs.IStubElementType;
@@ -171,7 +172,7 @@ public class GrFieldImpl extends GrVariableBaseImpl<GrFieldStub> implements GrFi
@NotNull
public SearchScope getUseScope() {
if (isProperty()) {
return getManager().getFileManager().getUseScope(this); //maximal scope
return ResolveScopeManager.getElementUseScope(this); //maximal scope
}
return PsiImplUtil.getMemberUseScope(this);
}

View File

@@ -15,8 +15,11 @@
*/
package org.jetbrains.plugins.groovy.lang.psi.impl.synthetic;
import com.intellij.psi.*;
import com.intellij.psi.impl.PsiManagerEx;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiExpression;
import com.intellij.psi.PsiType;
import com.intellij.psi.impl.file.impl.ResolveScopeManager;
import com.intellij.psi.search.SearchScope;
import com.intellij.util.ArrayUtil;
import com.intellij.util.IncorrectOperationException;
@@ -80,7 +83,7 @@ public class GrLightField extends GrLightVariable implements GrField {
@NotNull
@Override
public SearchScope getUseScope() {
return ((PsiManagerEx) getManager()).getFileManager().getUseScope(this);
return ResolveScopeManager.getElementUseScope(this);
}
@Override