formatter: whitespace between block close and comments
diff --git a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
index 775be8a..cddc59f 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -972,7 +972,11 @@
&& token.getType() != ASTokenTypes.TOKEN_BLOCK_OPEN) {
blockOpenPending = false;
}
- caseOrDefaultBlockOpenPending = false;
+ if (token.getType() != ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT
+ && token.getType() != ASTokenTypes.HIDDEN_TOKEN_MULTI_LINE_COMMENT
+ && token.getType() != ASTokenTypes.TOKEN_ASDOC_COMMENT) {
+ caseOrDefaultBlockOpenPending = false;
+ }
requiredSpace = false;
numRequiredNewLines = 0;
if (token instanceof MetaDataPayloadToken) {
@@ -1041,7 +1045,9 @@
if (!(item instanceof ObjectLiteralBlockStackItem)
&& (nextToken == null || (nextToken.getType() != ASTokenTypes.TOKEN_SEMICOLON
&& nextToken.getType() != ASTokenTypes.TOKEN_PAREN_CLOSE
- && nextToken.getType() != ASTokenTypes.TOKEN_COMMA))) {
+ && nextToken.getType() != ASTokenTypes.TOKEN_COMMA
+ && nextToken.getType() != ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT
+ && nextToken.getType() != ASTokenTypes.HIDDEN_TOKEN_MULTI_LINE_COMMENT))) {
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
}
}
@@ -1173,7 +1179,12 @@
inCaseOrDefaultClause = false;
caseOrDefaultBlockOpenPending = true;
indent = increaseIndent(indent);
- numRequiredNewLines = Math.max(numRequiredNewLines, 1);
+ if (nextToken != null && (nextToken.getType() == ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT
+ || nextToken.getType() == ASTokenTypes.HIDDEN_TOKEN_MULTI_LINE_COMMENT)) {
+ requiredSpace = true;
+ } else {
+ numRequiredNewLines = Math.max(numRequiredNewLines, 1);
+ }
} else if (ternaryStack > 0) {
ternaryStack--;
requiredSpace = true;
diff --git a/formatter/src/test/java/org/apache/royale/formatter/TestMultiLineComment.java b/formatter/src/test/java/org/apache/royale/formatter/TestMultiLineComment.java
index c55a310..6d32a02 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestMultiLineComment.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestMultiLineComment.java
@@ -108,4 +108,30 @@
result);
}
+ @Test
+ public void testAtEndOfBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ formatter.placeOpenBraceOnNewLine = true;
+ formatter.insertSpaces = false;
+ formatter.insertSpaceAtStartOfLineComment = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "{\n" +
+ "\tstatement;\n" +
+ "} /* this is a comment */\n" +
+ "statement;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "{\n" +
+ "\tstatement;\n" +
+ "} /* this is a comment */\n" +
+ "statement;",
+ // @formatter:on
+ result);
+ }
+
}
diff --git a/formatter/src/test/java/org/apache/royale/formatter/TestSingleLineComment.java b/formatter/src/test/java/org/apache/royale/formatter/TestSingleLineComment.java
index 10e26f2..4c20606 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestSingleLineComment.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestSingleLineComment.java
@@ -178,4 +178,30 @@
result);
}
+ @Test
+ public void testAtEndOfBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ formatter.placeOpenBraceOnNewLine = true;
+ formatter.insertSpaces = false;
+ formatter.insertSpaceAtStartOfLineComment = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "{\n" +
+ "\tstatement;\n" +
+ "} // this is a comment\n" +
+ "statement;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "{\n" +
+ "\tstatement;\n" +
+ "} // this is a comment\n" +
+ "statement;",
+ // @formatter:on
+ result);
+ }
+
}
diff --git a/formatter/src/test/java/org/apache/royale/formatter/TestSwitchStatement.java b/formatter/src/test/java/org/apache/royale/formatter/TestSwitchStatement.java
index d5a7677..dffb116 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestSwitchStatement.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestSwitchStatement.java
@@ -699,4 +699,56 @@
// @formatter:on
result);
}
+
+ @Test
+ public void testCommentOnSameLineAsCaseClause() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ formatter.placeOpenBraceOnNewLine = true;
+ formatter.insertSpaces = false;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "switch (condition)\n" +
+ "{\n" +
+ "\tcase clause://what\n" +
+ "\t\tbreak;\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "switch (condition)\n" +
+ "{\n" +
+ "\tcase clause: // what\n" +
+ "\t\tbreak;\n" +
+ "}",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testCommentOnSameLineAsDefaultClause() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ formatter.placeOpenBraceOnNewLine = true;
+ formatter.insertSpaces = false;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "switch (condition)\n" +
+ "{\n" +
+ "\tdefault://what\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "switch (condition)\n" +
+ "{\n" +
+ "\tdefault: // what\n" +
+ "}",
+ // @formatter:on
+ result);
+ }
}