From 55fe01a84c4e3ddc0d163ab412dc607a0c1269e8 Mon Sep 17 00:00:00 2001 From: Alexandr Suhinin Date: Thu, 15 Dec 2022 09:50:36 +0200 Subject: [PATCH] [introduce parameter] IDEA-305980: revert all changes if refactoring is cancelled (including import) GitOrigin-RevId: 2acb4c26809377fc307075fa23c008584b66de8b --- .../InplaceIntroduceParameterPopup.java | 9 ++++++--- .../escapePositionOnLocal_after.java | 2 +- .../inplaceIntroduceParameter/escapePosition_after.java | 2 +- .../inplaceIntroduceParameter/revertImports.java | 5 +++++ .../inplaceIntroduceParameter/revertImports_after.java | 5 +++++ .../java/refactoring/InplaceIntroduceParameterTest.java | 4 ++++ 6 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 java/java-tests/testData/refactoring/inplaceIntroduceParameter/revertImports.java create mode 100644 java/java-tests/testData/refactoring/inplaceIntroduceParameter/revertImports_after.java diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceParameter/InplaceIntroduceParameterPopup.java b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceParameter/InplaceIntroduceParameterPopup.java index 77636e434dd5..5cb1771c081a 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceParameter/InplaceIntroduceParameterPopup.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceParameter/InplaceIntroduceParameterPopup.java @@ -30,6 +30,7 @@ import com.intellij.psi.search.SearchScope; import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.JavaRefactoringSettings; import com.intellij.refactoring.RefactoringActionHandler; +import com.intellij.refactoring.extractMethod.newImpl.inplace.EditorState; import com.intellij.refactoring.extractMethod.newImpl.inplace.InplaceExtractUtils; import com.intellij.refactoring.introduceVariable.IntroduceVariableBase; import com.intellij.refactoring.rename.inplace.TemplateInlayUtil; @@ -60,6 +61,7 @@ public final class InplaceIntroduceParameterPopup extends AbstractJavaInplaceInt private final PsiMethod myOriginalMethod; private PsiMethod myCreatedDelegate; + private final EditorState myEditorState; private EditorCodePreview myEditorPreview; @@ -82,6 +84,8 @@ public final class InplaceIntroduceParameterPopup extends AbstractJavaInplaceInt myMustBeFinal = mustBeFinal; myReplaceChoice = replaceChoice; + myEditorState = new EditorState(editor); + myPanel = new InplaceIntroduceParameterUI(project, localVar, expr, method, parametersToRemove, typeSelectorManager, myOccurrences) { @Override @@ -294,9 +298,8 @@ public final class InplaceIntroduceParameterPopup extends AbstractJavaInplaceInt } @Override - protected void restoreState(@NotNull PsiVariable psiField) { - super.restoreState(psiField); - removeDelegate(); + protected void performCleanup() { + myEditorState.revert(); } @Override diff --git a/java/java-tests/testData/refactoring/inplaceIntroduceParameter/escapePositionOnLocal_after.java b/java/java-tests/testData/refactoring/inplaceIntroduceParameter/escapePositionOnLocal_after.java index d7f32ec2711d..429535e3ac38 100644 --- a/java/java-tests/testData/refactoring/inplaceIntroduceParameter/escapePositionOnLocal_after.java +++ b/java/java-tests/testData/refactoring/inplaceIntroduceParameter/escapePositionOnLocal_after.java @@ -1,5 +1,5 @@ class Test { void simpleMethod() { - boolean bb; + boolean bb; } } diff --git a/java/java-tests/testData/refactoring/inplaceIntroduceParameter/escapePosition_after.java b/java/java-tests/testData/refactoring/inplaceIntroduceParameter/escapePosition_after.java index fe58d5adc0c6..b1a33a400fb4 100644 --- a/java/java-tests/testData/refactoring/inplaceIntroduceParameter/escapePosition_after.java +++ b/java/java-tests/testData/refactoring/inplaceIntroduceParameter/escapePosition_after.java @@ -1,6 +1,6 @@ class Test { void simpleMethod() { - System.out.println(""); + System.out.println(""); System.out.println(""); } } diff --git a/java/java-tests/testData/refactoring/inplaceIntroduceParameter/revertImports.java b/java/java-tests/testData/refactoring/inplaceIntroduceParameter/revertImports.java new file mode 100644 index 000000000000..020390eca116 --- /dev/null +++ b/java/java-tests/testData/refactoring/inplaceIntroduceParameter/revertImports.java @@ -0,0 +1,5 @@ +class Test { + void simpleMethod() { + System.out.println("Collections.emptyList()".codePoints()); + } +} diff --git a/java/java-tests/testData/refactoring/inplaceIntroduceParameter/revertImports_after.java b/java/java-tests/testData/refactoring/inplaceIntroduceParameter/revertImports_after.java new file mode 100644 index 000000000000..cc24cc919632 --- /dev/null +++ b/java/java-tests/testData/refactoring/inplaceIntroduceParameter/revertImports_after.java @@ -0,0 +1,5 @@ +class Test { + void simpleMethod() { + System.out.println("Collections.emptyList()".codePoints()); + } +} diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/InplaceIntroduceParameterTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/InplaceIntroduceParameterTest.java index d16183348b77..5f5dd468c899 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/InplaceIntroduceParameterTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/InplaceIntroduceParameterTest.java @@ -122,6 +122,10 @@ public class InplaceIntroduceParameterTest extends AbstractJavaInplaceIntroduceT doTestEscape(); } + public void testRevertImports(){ + doTestEscape(); + } + public void testExtractParamOverLocal() { doTest(null); }