Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMateusz Matela2018-03-31 20:45:54 +0000
committerMateusz Matela2018-03-31 20:46:50 +0000
commit40de434eadcf8e8504778f1afe4d03f4ca423453 (patch)
treebb0bb44e43bf0240b81462ceb91578fb8c9350f4
parentd04ec1de6d8efe21aa77952258bfe7b76f36cddb (diff)
downloadeclipse.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
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java33
-rw-r--r--org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.java5
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);
}

Back to the top