package com.intellij.psi.resolve;
import com.intellij.psi.*;
+import com.intellij.psi.impl.search.JavaSourceFilterScope;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.testFramework.ResolveTestCase;
private PsiReference configure() throws Exception {
return configureByFile("codeFragment/" + getTestName(false) + ".java");
}
+
+ public void testResolveScopeWithFragmentContext() throws Exception {
+ PsiElement physical = configureByFile("codeFragment/LocalVariable.java").getElement();
+ JavaCodeFragment fragment = JavaCodeFragmentFactory.getInstance(myProject)
+ .createExpressionCodeFragment("ref", physical, null, true);
+ fragment.forceResolveScope(new JavaSourceFilterScope(physical.getResolveScope()));
+ assertFalse(fragment.getResolveScope().equals(physical.getResolveScope()));
+
+ PsiExpression lightExpr = JavaPsiFacade.getElementFactory(myProject).createExpressionFromText("xxx.xxx", fragment);
+ assertEquals(lightExpr.getResolveScope(), fragment.getResolveScope());
+ }
}
import com.intellij.psi.*;
import com.intellij.psi.impl.PsiManagerImpl;
import com.intellij.psi.impl.ResolveScopeManager;
-import com.intellij.psi.impl.source.resolve.FileContextUtil;
import com.intellij.psi.search.DelegatingGlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.SearchScope;
if (forcedScope != null) {
return forcedScope;
}
- final PsiElement context = containingFile.getContext();
- if (context == null) {
- return GlobalSearchScope.allScope(myProject);
+ }
+
+ if (containingFile != null) {
+ PsiElement context = containingFile.getContext();
+ if (context != null) {
+ return getResolveScope(context);
}
- return getResolveScope(context);
}
- contextFile = containingFile != null ? FileContextUtil.getContextFile(containingFile) : null;
- if (contextFile == null) {
+ contextFile = containingFile;
+ if (containingFile == null) {
return GlobalSearchScope.allScope(myProject);
}
else if (contextFile instanceof FileResolveScopeProvider) {