From 8dc3ede247ab66902ed7bf06e4290bcbce4cf0fc Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Wed, 25 Sep 2013 13:45:00 +0400 Subject: [PATCH] IDEA-112387 Reformat code with rearrange entires on = fail on enum [CR-IC-2205] --- .../JavaRearrangerBlankLinesTest.groovy | 12 ++++++++++ .../arrangement/engine/ArrangementEngine.java | 4 ++++ .../engine/ArrangementEntryWrapper.java | 22 ++++++------------- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/psi/codeStyle/arrangement/JavaRearrangerBlankLinesTest.groovy b/java/java-tests/testSrc/com/intellij/psi/codeStyle/arrangement/JavaRearrangerBlankLinesTest.groovy index 0b4e838382de..b456d41aa300 100644 --- a/java/java-tests/testSrc/com/intellij/psi/codeStyle/arrangement/JavaRearrangerBlankLinesTest.groovy +++ b/java/java-tests/testSrc/com/intellij/psi/codeStyle/arrangement/JavaRearrangerBlankLinesTest.groovy @@ -131,4 +131,16 @@ class Test { }''' doTest(initial: text, expected: text, rules: [rule(CLASS)] ) } + + void "test statements on the same line"() { + def before = '''\ + + + +public enum Sender {a, b; private String value; +} +''' + doTest(initial: before, expected: before) + } + } diff --git a/platform/lang-impl/src/com/intellij/psi/codeStyle/arrangement/engine/ArrangementEngine.java b/platform/lang-impl/src/com/intellij/psi/codeStyle/arrangement/engine/ArrangementEngine.java index b0c22a6fc635..5bf8b5259e3d 100644 --- a/platform/lang-impl/src/com/intellij/psi/codeStyle/arrangement/engine/ArrangementEngine.java +++ b/platform/lang-impl/src/com/intellij/psi/codeStyle/arrangement/engine/ArrangementEngine.java @@ -639,6 +639,10 @@ public class ArrangementEngine { } } + /** + * @return position x for which myDocument.getText().substring(x, startOffset) contains + * blankLinesNumber line feeds and myDocument.getText.charAt(x-1) == '\n' + */ private int getBlankLineOffset(int blankLinesNumber, int startOffset) { int startLine = myDocument.getLineNumber(startOffset); if (startLine <= 0) { diff --git a/platform/lang-impl/src/com/intellij/psi/codeStyle/arrangement/engine/ArrangementEntryWrapper.java b/platform/lang-impl/src/com/intellij/psi/codeStyle/arrangement/engine/ArrangementEntryWrapper.java index a801774f5def..158c559a0608 100644 --- a/platform/lang-impl/src/com/intellij/psi/codeStyle/arrangement/engine/ArrangementEntryWrapper.java +++ b/platform/lang-impl/src/com/intellij/psi/codeStyle/arrangement/engine/ArrangementEntryWrapper.java @@ -119,25 +119,17 @@ public class ArrangementEntryWrapper { @SuppressWarnings("AssignmentToForLoopParameter") public void updateBlankLines(@NotNull Document document) { - int startLine = document.getLineNumber(getStartOffset()); myBlankLinesBefore = 0; - if (startLine <= 0) { - return; - } - + int lineFeeds = 0; CharSequence text = document.getCharsSequence(); - int lastLineFeed = document.getLineStartOffset(startLine) - 1; - for (int i = lastLineFeed - 1; i >= 0; i--) { - i = CharArrayUtil.shiftBackward(text, i, " \t"); - if (text.charAt(i) == '\n') { - ++myBlankLinesBefore; - } - else { - break; - } + for (int current = getStartOffset() - 1; current >= 0; current--) { + current = CharArrayUtil.shiftBackward(text, current, " \t"); + if (text.charAt(current) == '\n') lineFeeds++; + else break; } + if (lineFeeds > 0) myBlankLinesBefore = lineFeeds - 1; } - + public void setNext(@Nullable ArrangementEntryWrapper next) { myNext = next; }