From e0015d4888aa15448d8bf398d07fb1b2e8130860 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Sat, 9 Jun 2012 15:39:42 +0400 Subject: [PATCH] change signature: do not show conflicts about non-changed param names --- .../JavaChangeSignatureUsageSearcher.java | 3 ++- .../changeSignature/ParamNameNoConflict.java | 11 +++++++++++ .../changeSignature/ParamNameNoConflict_after.java | 11 +++++++++++ .../com/intellij/refactoring/ChangeSignatureTest.java | 7 +++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/changeSignature/ParamNameNoConflict.java create mode 100644 java/java-tests/testData/refactoring/changeSignature/ParamNameNoConflict_after.java diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java index 46ca81d384f7..80fd509f233e 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java @@ -116,7 +116,8 @@ class JavaChangeSignatureUsageSearcher { final int oldParameterIndex = parameterInfo.getOldIndex(); final String newName = parameterInfo.getName(); if (oldParameterIndex >= 0 ) { - if (isOriginal&& oldParameterIndex < parameters.length) { //Name changes take place only in primary method + if (isOriginal && oldParameterIndex < parameters.length && !newName.equals(myChangeInfo.getOldParameterNames()[oldParameterIndex])) { + //Name changes take place only in primary method when name was actually changed final PsiParameter parameter = parameters[oldParameterIndex]; if (!newName.equals(parameter.getName())) { JavaUnresolvableLocalCollisionDetector.visitLocalsCollisions( diff --git a/java/java-tests/testData/refactoring/changeSignature/ParamNameNoConflict.java b/java/java-tests/testData/refactoring/changeSignature/ParamNameNoConflict.java new file mode 100644 index 000000000000..a98e37640762 --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignature/ParamNameNoConflict.java @@ -0,0 +1,11 @@ +class D { + void foo(Object o){} +} + +class DImpl extends D { + void foo(Object o1) { + super.foo(o1); + int o = 0; + System.out.println(o); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/changeSignature/ParamNameNoConflict_after.java b/java/java-tests/testData/refactoring/changeSignature/ParamNameNoConflict_after.java new file mode 100644 index 000000000000..6b29466ed297 --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignature/ParamNameNoConflict_after.java @@ -0,0 +1,11 @@ +class D { + void foo(Object o, boolean b){} +} + +class DImpl extends D { + void foo(Object o1, boolean b) { + super.foo(o1, b); + int o = 0; + System.out.println(o); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java index 77d7fcdea41e..41acb241a84c 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java @@ -134,6 +134,13 @@ public class ChangeSignatureTest extends LightRefactoringTestCase { }, false); } + public void testParamNameNoConflict() throws Exception { + doTest(null, new ParameterInfoImpl[]{ + new ParameterInfoImpl(0), + new ParameterInfoImpl(-1, "b", PsiType.BOOLEAN) + }, false); + } + public void testParamJavadoc() throws Exception { doTest(null, new ParameterInfoImpl[] { new ParameterInfoImpl(1, "z", PsiType.INT),