diff --git a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceReader.java b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceReader.java index 0accda716034..0b90cd79dde1 100644 --- a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceReader.java +++ b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceReader.java @@ -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; diff --git a/java/java-tests/testData/compiler/compilerReferenceFindUsages/testMethodUsageOnGetter/Bar.java b/java/java-tests/testData/compiler/compilerReferenceFindUsages/testMethodUsageOnGetter/Bar.java new file mode 100644 index 000000000000..cdda5ab9e03d --- /dev/null +++ b/java/java-tests/testData/compiler/compilerReferenceFindUsages/testMethodUsageOnGetter/Bar.java @@ -0,0 +1,7 @@ +class Bar { + + void m() { + FooFactory.getFoo().someMethod(); + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/compiler/compilerReferenceFindUsages/testMethodUsageOnGetter/Foo.java b/java/java-tests/testData/compiler/compilerReferenceFindUsages/testMethodUsageOnGetter/Foo.java new file mode 100644 index 000000000000..77db046989bf --- /dev/null +++ b/java/java-tests/testData/compiler/compilerReferenceFindUsages/testMethodUsageOnGetter/Foo.java @@ -0,0 +1,5 @@ +class Foo { + void someMethod() { + + } +} \ No newline at end of file diff --git a/java/java-tests/testData/compiler/compilerReferenceFindUsages/testMethodUsageOnGetter/FooFactory.java b/java/java-tests/testData/compiler/compilerReferenceFindUsages/testMethodUsageOnGetter/FooFactory.java new file mode 100644 index 000000000000..54e801af779f --- /dev/null +++ b/java/java-tests/testData/compiler/compilerReferenceFindUsages/testMethodUsageOnGetter/FooFactory.java @@ -0,0 +1,5 @@ +class FooFactory { + public static Foo getFoo() { + return new Foo(); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/compiler/CompilerReferencesFindUsagesTest.java b/java/java-tests/testSrc/com/intellij/compiler/CompilerReferencesFindUsagesTest.java index 8977e1f40ca3..46b1776dd016 100644 --- a/java/java-tests/testSrc/com/intellij/compiler/CompilerReferencesFindUsagesTest.java +++ b/java/java-tests/testSrc/com/intellij/compiler/CompilerReferencesFindUsagesTest.java @@ -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];