diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiImportStaticReferenceElementImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiImportStaticReferenceElementImpl.java index 1af1755c20bf..9a0642e8ff88 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiImportStaticReferenceElementImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiImportStaticReferenceElementImpl.java @@ -252,9 +252,17 @@ public class PsiImportStaticReferenceElementImpl extends CompositePsiElement imp @Override public boolean isReferenceTo(PsiElement element) { final String name = getReferenceName(); - return name != null && - element instanceof PsiNamedElement && - name.equals(((PsiNamedElement)element).getName()) && element.getManager().areElementsEquivalent(resolve(), element); + if (name == null || !(element instanceof PsiNamedElement) || !name.equals(((PsiNamedElement)element).getName())) { + return false; + } + + for (JavaResolveResult result : multiResolve(false)) { + if (getManager().areElementsEquivalent(result.getElement(), element)) { + return true; + } + } + + return false; } @Override diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/highlighting/HighlightUsagesHandlerTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/highlighting/HighlightUsagesHandlerTest.groovy index fe80d28dcec2..bdf29f475f6b 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/highlighting/HighlightUsagesHandlerTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/highlighting/HighlightUsagesHandlerTest.groovy @@ -147,6 +147,44 @@ public class HighlightUsagesHandlerTest extends LightCodeInsightFixtureTestCase myFixture.configureFromExistingVirtualFile(file) } + public void "test statically imported overloads from usage"() { + myFixture.addClass(""" +class Foo { + static void foo(int a) {} + static void foo(int a, int b) {} +}""") + myFixture.configureByText 'Bar.java', ''' +import static Foo.foo; + +class Bar { + { + foo(1); + } +} +''' + ctrlShiftF7() + assertRangeText 'foo', 'foo' + } + + public void "test statically imported overloads from import"() { + myFixture.addClass(""" +class Foo { + static void foo(int a) {} + static void foo(int a, int b) {} +}""") + myFixture.configureByText 'Bar.java', ''' +import static Foo.foo; + +class Bar { + { + foo(1); + } +} +''' + ctrlShiftF7() + assertRangeText 'foo', 'foo', 'foo' //import highlighted twice: for each overloaded usage target + } + @Override protected String getBasePath() { return JavaTestUtil.relativeJavaTestDataPath