This is an automated email from the ASF dual-hosted git repository.

joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git

commit 0e872b57a86bbcd237df48b8ae5135ad282bcd11
Author: Josh Tynjala <[email protected]>
AuthorDate: Mon Nov 22 14:50:14 2021 -0800

    formatter: whitespace between block close and comments
---
 .../org/apache/royale/formatter/FORMATTER.java     | 17 +++++--
 .../royale/formatter/TestMultiLineComment.java     | 26 +++++++++++
 .../royale/formatter/TestSingleLineComment.java    | 26 +++++++++++
 .../royale/formatter/TestSwitchStatement.java      | 52 ++++++++++++++++++++++
 4 files changed, 118 insertions(+), 3 deletions(-)

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 @@ public class FORMATTER {
                                        && 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 @@ public class FORMATTER {
                                                        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 @@ public class FORMATTER {
                                                                
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 @@ public class TestMultiLineComment extends 
BaseFormatterTests {
                                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 @@ public class TestSingleLineComment extends 
BaseFormatterTests {
                                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 @@ public class TestSwitchStatement extends 
BaseFormatterTests {
                                // @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);
+       }
 }

Reply via email to