diff options
author | Mateusz Matela | 2018-03-31 20:45:54 +0000 |
---|---|---|
committer | Mateusz Matela | 2018-03-31 20:46:50 +0000 |
commit | 40de434eadcf8e8504778f1afe4d03f4ca423453 (patch) | |
tree | bb0bb44e43bf0240b81462ceb91578fb8c9350f4 | |
parent | d04ec1de6d8efe21aa77952258bfe7b76f36cddb (diff) | |
download | eclipse.jdt.core-40de434eadcf8e8504778f1afe4d03f4ca423453.tar.gz eclipse.jdt.core-40de434eadcf8e8504778f1afe4d03f4ca423453.tar.xz eclipse.jdt.core-40de434eadcf8e8504778f1afe4d03f4ca423453.zip |
Bug 373625 - [formatter] preserve whitespace between code and comments fails when aligning fields in columnsI20180401-2000
2 files changed, 36 insertions, 2 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java index 7207437e81..2b31cacd2b 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java @@ -12814,4 +12814,37 @@ public void testBug531981() { "}" ); } + /** + * https://bugs.eclipse.org/373625 - [formatter] preserve whitespace between + * code and comments fails when aligning fields in columns + */ +public void testBug373625a() { + this.formatterPrefs.align_type_members_on_columns = true; + this.formatterPrefs.comment_preserve_white_space_between_code_and_line_comments = true; + String source = + "class C {\n" + + " int a = 1; // comment1\n" + + " String bb = null; // comment2\n" + + "}"; + formatSource(source); +} + /** + * https://bugs.eclipse.org/373625 - [formatter] preserve whitespace between + * code and comments fails when aligning fields in columns + */ +public void testBug373625b() { + this.formatterPrefs.align_type_members_on_columns = true; + this.formatterPrefs.comment_preserve_white_space_between_code_and_line_comments = true; + String source = + "class C {\n" + + " int a = 1; /* comment1 */\n" + + " String bb = \"\"; //$NON-NLS-1$\n" + + "}"; + formatSource(source, + "class C {\n" + + " int a = 1; /* comment1 */\n" + + " String bb = \"\"; //$NON-NLS-1$\n" + + "}" + ); +} } diff --git a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.java b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.java index 216b6b8966..9af0fab33c 100644 --- a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.java +++ b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.java @@ -154,6 +154,7 @@ public class FieldAligner { public void alignComments() { if (this.fieldAlignGroups.isEmpty()) return; + boolean alignLineComments = !this.options.comment_preserve_white_space_between_code_and_line_comments; PositionCounter positionCounter = new PositionCounter(); // align comments after field declarations for (List<FieldDeclaration> alignGroup : this.fieldAlignGroups) { @@ -179,10 +180,10 @@ public class FieldAligner { if (lineBreak) { if (token.tokenType == TokenNameCOMMENT_BLOCK) { token.setAlign(maxCommentAlign); - } else { + } else if (alignLineComments) { this.tm.addNLSAlignIndex(i, maxCommentAlign); } - } else if (next.tokenType == TokenNameCOMMENT_LINE + } else if (next.tokenType == TokenNameCOMMENT_LINE && alignLineComments || (next.tokenType == TokenNameCOMMENT_BLOCK && i == lastIndex)) { next.setAlign(maxCommentAlign); } |