From 9e165bcd23aa0a754c8ee34780b9041ad856b4fb Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 27 May 2010 16:05:07 +0400 Subject: [PATCH] do not treat usages of constructor as non-code (although !reference.isResolvedTo(element) as reference resolves to the constructor's class) --- .../renameCollisions/AllUsagesInCode.java | 5 +++++ .../refactoring/RenameCollisionsTest.java | 18 ++++++++++++++++++ .../refactoring/rename/RenameUtil.java | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/renameCollisions/AllUsagesInCode.java diff --git a/java/java-tests/testData/refactoring/renameCollisions/AllUsagesInCode.java b/java/java-tests/testData/refactoring/renameCollisions/AllUsagesInCode.java new file mode 100644 index 000000000000..0314cee15119 --- /dev/null +++ b/java/java-tests/testData/refactoring/renameCollisions/AllUsagesInCode.java @@ -0,0 +1,5 @@ +public class ToFind { + void foo() { + new ToFind(); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/RenameCollisionsTest.java b/java/java-tests/testSrc/com/intellij/refactoring/RenameCollisionsTest.java index 99ff8bf186d4..1a069c4712fa 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/RenameCollisionsTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/RenameCollisionsTest.java @@ -6,9 +6,14 @@ import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.impl.JavaSdkImpl; import com.intellij.psi.PsiElement; import com.intellij.refactoring.rename.RenameProcessor; +import com.intellij.refactoring.rename.RenameUtil; +import com.intellij.refactoring.util.MoveRenameUsageInfo; import com.intellij.testFramework.LightCodeInsightTestCase; +import com.intellij.usageView.UsageInfo; import org.junit.Assert; +import java.util.HashMap; + /** * @author sashache */ @@ -165,4 +170,17 @@ public class RenameCollisionsTest extends LightCodeInsightTestCase { protected Sdk getProjectJDK() { return JavaSdkImpl.getMockJdk15("java 1.5"); } + + public void testAllUsagesInCode() throws Exception { + configureByFile(BASE_PATH + getTestName(false) + ".java"); + PsiElement element = TargetElementUtilBase + .findTargetElement(myEditor, TargetElementUtilBase.ELEMENT_NAME_ACCEPTED | TargetElementUtilBase.REFERENCED_ELEMENT_ACCEPTED); + assertNotNull(element); + final UsageInfo[] usageInfos = RenameUtil.findUsages(element, "newName", true, true, new HashMap()); + assertSize(1, usageInfos); + for (UsageInfo usageInfo : usageInfos) { + assertTrue(usageInfo instanceof MoveRenameUsageInfo); + assertFalse(usageInfo.isNonCodeUsage); + } + } } diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/RenameUtil.java b/platform/lang-impl/src/com/intellij/refactoring/rename/RenameUtil.java index 512497024dbe..9581e20f0149 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/RenameUtil.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/RenameUtil.java @@ -69,7 +69,7 @@ public class RenameUtil { PsiElement referenceElement = ref.getElement(); result.add(new MoveRenameUsageInfo(referenceElement, ref, ref.getRangeInElement().getStartOffset(), ref.getRangeInElement().getEndOffset(), element, - !ref.isReferenceTo(element))); + ref.resolve() == null)); } processor.findCollisions(element, newName, allRenames, result);