diff --git a/java/java-impl/src/com/intellij/refactoring/introduceParameter/InplaceIntroduceParameterPopup.java b/java/java-impl/src/com/intellij/refactoring/introduceParameter/InplaceIntroduceParameterPopup.java index 5528a93cae6b..54ae5167601d 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceParameter/InplaceIntroduceParameterPopup.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceParameter/InplaceIntroduceParameterPopup.java @@ -97,9 +97,11 @@ public class InplaceIntroduceParameterPopup extends AbstractJavaInplaceIntroduce protected TIntArrayList getParametersToRemove() { TIntArrayList parameters = new TIntArrayList(); - for (int i = 0; i < myParametersToRemove.length; i++) { - if (myParametersToRemove[i] != null) { - parameters.add(i); + if (myCbReplaceAllOccurences == null || myCbReplaceAllOccurences.isSelected()) { + for (int i = 0; i < myParametersToRemove.length; i++) { + if (myParametersToRemove[i] != null) { + parameters.add(i); + } } } return parameters; diff --git a/java/java-impl/src/com/intellij/refactoring/introduceParameter/IntroduceParameterSettingsUI.java b/java/java-impl/src/com/intellij/refactoring/introduceParameter/IntroduceParameterSettingsUI.java index 10def5808511..af4c559bbc80 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceParameter/IntroduceParameterSettingsUI.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceParameter/IntroduceParameterSettingsUI.java @@ -243,6 +243,9 @@ public abstract class IntroduceParameterSettingsUI { } public boolean isParamToRemove(PsiParameter param) { + if (myCbReplaceAllOccurences != null && !myCbReplaceAllOccurences.isSelected()) { + return false; + } if (param.isVarArgs()) { return myParametersToRemove[myParametersToRemove.length - 1] != null; } diff --git a/java/java-tests/testData/refactoring/inplaceIntroduceParameter/replaceOneLeaveParamToDelete.java b/java/java-tests/testData/refactoring/inplaceIntroduceParameter/replaceOneLeaveParamToDelete.java new file mode 100644 index 000000000000..fedc19bb7e21 --- /dev/null +++ b/java/java-tests/testData/refactoring/inplaceIntroduceParameter/replaceOneLeaveParamToDelete.java @@ -0,0 +1,6 @@ +class Test { + void foo(int i) { + System.out.println(i); + System.out.println(i); + } +} diff --git a/java/java-tests/testData/refactoring/inplaceIntroduceParameter/replaceOneLeaveParamToDelete_after.java b/java/java-tests/testData/refactoring/inplaceIntroduceParameter/replaceOneLeaveParamToDelete_after.java new file mode 100644 index 000000000000..f759299d1479 --- /dev/null +++ b/java/java-tests/testData/refactoring/inplaceIntroduceParameter/replaceOneLeaveParamToDelete_after.java @@ -0,0 +1,6 @@ +class Test { + void foo(int i, int i1) { + System.out.println(i1); + System.out.println(i); + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceParameterTest.java b/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceParameterTest.java index b0749bf56f72..6eb55cf539d2 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceParameterTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/InplaceIntroduceParameterTest.java @@ -60,6 +60,14 @@ public class InplaceIntroduceParameterTest extends AbstractJavaInplaceIntroduceT }); } + public void testReplaceOneLeaveParamToDelete() throws Exception { + doTest(new Pass() { + @Override + public void pass(AbstractInplaceIntroducer inplaceIntroduceFieldPopup) { + } + }); + } + public void testReplaceAllBrokenIdentifier() throws Exception { doTest(new Pass() { @Override