diff --git a/java/java-tests/testData/actions/reformatFileInEditor/reformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine_after.java b/java/java-tests/testData/actions/reformatFileInEditor/reformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine_after.java new file mode 100644 index 000000000000..a57a3eea690d --- /dev/null +++ b/java/java-tests/testData/actions/reformatFileInEditor/reformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine_after.java @@ -0,0 +1,7 @@ +public class TestClass { + public static void main() { + } + + static class InnerClass { + } +} diff --git a/java/java-tests/testData/actions/reformatFileInEditor/reformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine_before.java b/java/java-tests/testData/actions/reformatFileInEditor/reformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine_before.java new file mode 100644 index 000000000000..7042f91bdeab --- /dev/null +++ b/java/java-tests/testData/actions/reformatFileInEditor/reformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine_before.java @@ -0,0 +1,8 @@ +public class TestClass { + static class InnerClass { + } + + + public static void main() { + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/actions/ReformatCodeActionInEditorTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/actions/ReformatCodeActionInEditorTest.java index 578ba79bad81..4ba5471b93a0 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/actions/ReformatCodeActionInEditorTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/actions/ReformatCodeActionInEditorTest.java @@ -102,6 +102,10 @@ public class ReformatCodeActionInEditorTest extends LightPlatformCodeInsightFixt public void testFormatOptimizeRearrangeVcsChanges() { doTest(new ReformatCodeRunOptions(VCS_CHANGED_TEXT).setOptimizeImports(true).setRearrangeCode(true)); } + + public void testReformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine() { + doTest(new ReformatCodeRunOptions(WHOLE_FILE).setRearrangeCode(true)); + } public void testFormatSelection_DoNotTouchTrailingWhiteSpaces() { //todo actually test is not working, and working test is not working diff --git a/platform/lang-impl/src/com/intellij/codeInsight/actions/RearrangeCodeProcessor.java b/platform/lang-impl/src/com/intellij/codeInsight/actions/RearrangeCodeProcessor.java index 1ef6662d31bb..a81322aeed94 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/actions/RearrangeCodeProcessor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/actions/RearrangeCodeProcessor.java @@ -80,8 +80,9 @@ public class RearrangeCodeProcessor extends AbstractLayoutCodeProcessor { Document document = PsiDocumentManager.getInstance(myProject).getDocument(file); if (document != null && Rearranger.EXTENSION.forLanguage(file.getLanguage()) != null) { - Runnable command = prepareRearrangeCommand(file, ranges); PsiDocumentManager.getInstance(myProject).doPostponedOperationsAndUnblockDocument(document); + PsiDocumentManager.getInstance(myProject).commitDocument(document); + Runnable command = prepareRearrangeCommand(file, ranges); try { CommandProcessor.getInstance().executeCommand(myProject, command, COMMAND_NAME, null); }