javac ast indices: fix find usages of class members: can't find usages in getter's method call

This commit is contained in:
Dmitry Batkovich
2016-10-28 12:42:54 +03:00
parent 45a85a8117
commit 252be38f2d
5 changed files with 26 additions and 1 deletions
@@ -66,7 +66,7 @@ class CompilerReferenceReader {
final LightRef.NamedLightRef[] hierarchy = getWholeHierarchy(hierarchyElement, checkBaseClassAmbiguity);
if (hierarchy == null) return null;
for (LightRef.NamedLightRef aClass : hierarchy) {
final LightRef overriderUsage = aClass.override(aClass.getName());
final LightRef overriderUsage = ref.override(aClass.getName());
addUsages(overriderUsage, set);
}
return set;
@@ -0,0 +1,7 @@
class Bar {
void m() {
FooFactory.getFoo().someMethod();
}
}
@@ -0,0 +1,5 @@
class Foo {
void someMethod() {
}
}
@@ -0,0 +1,5 @@
class FooFactory {
public static Foo getFoo() {
return new Foo();
}
}
@@ -55,6 +55,14 @@ public class CompilerReferencesFindUsagesTest extends DaemonAnalyzerTestCase {
return JavaTestUtil.getJavaTestDataPath() + "/compiler/compilerReferenceFindUsages/";
}
public void testMethodUsageOnGetter() throws Exception {
configureByFiles(getName(), getName() + "/Foo.java", getName() + "/FooFactory.java", getName() + "/Bar.java");
PsiMethod methodToSearch = findClass("Foo").findMethodsByName("someMethod", false)[0];
assertOneElement(MethodReferencesSearch.search(methodToSearch).findAll());
myCompilerTester.rebuild();
assertOneElement(MethodReferencesSearch.search(methodToSearch).findAll());
}
public void testMethodUsageInClassHierarchy() throws Exception {
configureByFiles(getName(), getName() + "/Bar.java", getName() + "/Foo.java");
PsiMethod methodToSearch = findClass("Foo").findMethodsByName("someMethod", false)[0];