From c04d30939926ff9a7a9eaafe4eb36ceaec794132 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 11 Mar 2016 15:03:12 +0100 Subject: [PATCH] copy reference: fix isReferenceTo check (IDEA-152601) --- .../intellij/ide/actions/JavaQualifiedNameProvider.java | 7 +++++-- .../testData/codeInsight/copyReference/Constructor.java | 5 +++++ .../intellij/codeInsight/CopyReferenceActionTest.groovy | 9 +++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/java/java-impl/src/com/intellij/ide/actions/JavaQualifiedNameProvider.java b/java/java-impl/src/com/intellij/ide/actions/JavaQualifiedNameProvider.java index e64059ec2d9e..d543e9a1d378 100644 --- a/java/java-impl/src/com/intellij/ide/actions/JavaQualifiedNameProvider.java +++ b/java/java-impl/src/com/intellij/ide/actions/JavaQualifiedNameProvider.java @@ -281,8 +281,11 @@ public class JavaQualifiedNameProvider implements QualifiedNameProvider { PsiElement resolved = referenceExpression.advancedResolve(true).getElement(); if (!(resolved instanceof PsiMember)) return false; PsiClass aClass = ((PsiMember)resolved).getContainingClass(); - if (aClass instanceof PsiAnonymousClass) aClass = ((PsiAnonymousClass)aClass).getBaseClassType().resolve(); - return aClass == targetElement.getContainingClass(); + if (aClass instanceof PsiAnonymousClass) { + aClass = ((PsiAnonymousClass)aClass).getBaseClassType().resolve(); + return aClass == targetElement.getContainingClass(); + } + return resolved == targetElement; } @Nullable diff --git a/java/java-tests/testData/codeInsight/copyReference/Constructor.java b/java/java-tests/testData/codeInsight/copyReference/Constructor.java index 0aa485c64311..2c0a3fa55fab 100644 --- a/java/java-tests/testData/codeInsight/copyReference/Constructor.java +++ b/java/java-tests/testData/codeInsight/copyReference/Constructor.java @@ -1,3 +1,8 @@ +class XXX { + void f() { + new + } +} class C2 { public C2(int i) { } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/CopyReferenceActionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/CopyReferenceActionTest.groovy index 773ab0ab74a0..ca1017ddb552 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/CopyReferenceActionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/CopyReferenceActionTest.groovy @@ -38,6 +38,15 @@ public class CopyReferenceActionTest extends LightCodeInsightFixtureTestCase { public void testIdentifierSeparator() throws Exception { doTest(); } public void testMethodFromAnonymousClass() throws Exception { doTest(); } + public void testSameClassNames() throws Exception { + myFixture.addClass("package p; public class Foo {}") + myFixture.configureByText("Foo.java", "package p1; public class Foo {}") + performCopy() + myFixture.configureByText("a.java", "import p.Foo; class Bar { }") + performPaste() + myFixture.checkResult """import p.Foo; class Bar {p1.Foo}""" + } + public void testAddImport() { myFixture.addClass("package foo; public class Foo {}") myFixture.configureByText "a.java", "import foo.Foo;"