light file's resolve scope should include that file (IDEA-152676)

This commit is contained in:
peter
2016-03-16 11:32:52 +01:00
parent 80c6e1c9f4
commit 920f7f7a9c
2 changed files with 19 additions and 1 deletions
@@ -1,5 +1,6 @@
package com.intellij.psi.resolve;
import com.intellij.ide.highlighter.JavaFileType;
import com.intellij.psi.*;
import com.intellij.psi.impl.search.JavaSourceFilterScope;
import com.intellij.psi.util.PsiTreeUtil;
@@ -57,4 +58,17 @@ public class ResolveInCodeFragmentTest extends ResolveTestCase {
PsiExpression lightExpr = JavaPsiFacade.getElementFactory(myProject).createExpressionFromText("xxx.xxx", fragment);
assertEquals(lightExpr.getResolveScope(), fragment.getResolveScope());
}
public void testClassHierarchyInNonPhysicalFile() {
PsiFile file = PsiFileFactory.getInstance(myProject).createFileFromText("a.java", JavaFileType.INSTANCE,
"class Parent { void foo( ); }\n" +
"class Child extends Parent { }\n" +
"class User {\n" +
" void caller() { new Child().foo(); }\n" +
"}", 0, true);
PsiReference ref = file.findReferenceAt(file.getText().indexOf("foo()"));
assertNotNull(ref);
assertTrue(ref.getElement().getResolveScope().contains(file.getViewProvider().getVirtualFile()));
assertInstanceOf(ref.resolve(), PsiMethod.class);
}
}