diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractMethodObjectHandler.java b/java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractMethodObjectHandler.java index 459a7030457f..070a519dcdc5 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractMethodObjectHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractMethodObjectHandler.java @@ -114,26 +114,26 @@ public class ExtractMethodObjectHandler implements RefactoringActionHandler { catch (IncorrectOperationException e) { LOG.error(e); } - } - }); - PsiDocumentManager.getInstance(project).commitAllDocuments(); - if (processor.isCreateInnerClass()) { - processor.moveUsedMethodsToInner(); - PsiDocumentManager.getInstance(project).commitAllDocuments(); - if (editor != null) { - DuplicatesImpl.processDuplicates(extractProcessor, project, editor); - } - } - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { + PsiDocumentManager.getInstance(project).commitAllDocuments(); if (processor.isCreateInnerClass()) { - processor.changeInstanceAccess(project); + processor.moveUsedMethodsToInner(); + PsiDocumentManager.getInstance(project).commitAllDocuments(); + if (editor != null) { + DuplicatesImpl.processDuplicates(extractProcessor, project, editor); + } } - final PsiElement method = processor.getMethod(); - LOG.assertTrue(method != null); - method.delete(); + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + if (processor.isCreateInnerClass()) { + processor.changeInstanceAccess(project); + } + final PsiElement method = processor.getMethod(); + LOG.assertTrue(method != null); + method.delete(); + } + }); } }); } diff --git a/java/java-tests/testData/refactoring/extractMethodObject/multipleExitPoints/FormattingInside.java b/java/java-tests/testData/refactoring/extractMethodObject/multipleExitPoints/FormattingInside.java new file mode 100644 index 000000000000..a78806bcc96d --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodObject/multipleExitPoints/FormattingInside.java @@ -0,0 +1,21 @@ +class ExtractMethodObjectFail { + public void foo() { + String parm1 = "parm1"; + String parm2 = "parm2"; + String parm3 = "parm3"; + String parm4 = "parm4"; + String parm5 = "parm5"; + String parm6 = "parm6"; + String parm7 = "parm7"; + String parm8 = "parm8"; + String parm9 = "parm8"; + String parm10 = "parm8"; + String parm11 = "parm8"; + String parm12 = "parm8"; + String parm13 = "parm8"; + String parm14 = "parm8"; + String parm15 = "parm8"; + + System.out.println(parm1 + parm2 + parm3 + parm4 + parm5 + parm6 + parm7 + parm8 + param9 + parm10 + parm11 + parm12 + parm13 + parm14 + parm15); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethodObject/multipleExitPoints/FormattingInside.java.after b/java/java-tests/testData/refactoring/extractMethodObject/multipleExitPoints/FormattingInside.java.after new file mode 100644 index 000000000000..f9b89f56beda --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodObject/multipleExitPoints/FormattingInside.java.after @@ -0,0 +1,113 @@ +class ExtractMethodObjectFail { + public void foo() { + Inner inner = new Inner().invoke(); + String parm1 = inner.getParm1(); + String parm2 = inner.getParm2(); + String parm3 = inner.getParm3(); + String parm4 = inner.getParm4(); + String parm5 = inner.getParm5(); + String parm6 = inner.getParm6(); + String parm7 = inner.getParm7(); + String parm8 = inner.getParm8(); + String parm10 = inner.getParm10(); + String parm11 = inner.getParm11(); + String parm12 = inner.getParm12(); + String parm13 = inner.getParm13(); + String parm14 = inner.getParm14(); + String parm15 = inner.getParm15(); + + System.out.println(parm1 + parm2 + parm3 + parm4 + parm5 + parm6 + parm7 + parm8 + param9 + parm10 + parm11 + parm12 + parm13 + parm14 + parm15); + } + + private class Inner { + private String parm1; + private String parm2; + private String parm3; + private String parm4; + private String parm5; + private String parm6; + private String parm7; + private String parm8; + private String parm10; + private String parm11; + private String parm12; + private String parm13; + private String parm14; + private String parm15; + + public String getParm1() { + return parm1; + } + + public String getParm2() { + return parm2; + } + + public String getParm3() { + return parm3; + } + + public String getParm4() { + return parm4; + } + + public String getParm5() { + return parm5; + } + + public String getParm6() { + return parm6; + } + + public String getParm7() { + return parm7; + } + + public String getParm8() { + return parm8; + } + + public String getParm10() { + return parm10; + } + + public String getParm11() { + return parm11; + } + + public String getParm12() { + return parm12; + } + + public String getParm13() { + return parm13; + } + + public String getParm14() { + return parm14; + } + + public String getParm15() { + return parm15; + } + + public Inner invoke() { + parm1 = "parm1"; + parm2 = "parm2"; + parm3 = "parm3"; + parm4 = "parm4"; + parm5 = "parm5"; + parm6 = "parm6"; + parm7 = "parm7"; + parm8 = "parm8"; + String parm9 = "parm8"; + parm10 = "parm8"; + parm11 = "parm8"; + parm12 = "parm8"; + parm13 = "parm8"; + parm14 = "parm8"; + parm15 = "parm8"; + return this; + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectWithMultipleExitPointsTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectWithMultipleExitPointsTest.java index 62787cb68e52..0f1dd9f14b61 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectWithMultipleExitPointsTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectWithMultipleExitPointsTest.java @@ -126,4 +126,8 @@ public class ExtractMethodObjectWithMultipleExitPointsTest extends LightRefactor public void testBatchUpdateCausedByFormatter() throws Exception { doTest(); } + + public void testFormattingInside() throws Exception { + doTest(); + } }