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 1338eb56eddfa3a791669d0bf5b815ab0fc20ae1
Author: Josh Tynjala <[email protected]>
AuthorDate: Wed Jan 8 09:17:23 2025 -0800

    formatter: fix extra space before colon if comment appears in object literal
---
 .../apache/royale/formatter/ASTokenFormatter.java  | 43 +++++++++++-----------
 .../apache/royale/formatter/TestObjectLiteral.java |  4 +-
 2 files changed, 24 insertions(+), 23 deletions(-)

diff --git 
a/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java 
b/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java
index 04406839e..4f0e0f772 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java
@@ -291,9 +291,10 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                        nextToken = getNextTokenByOffset(tokens, i, 1, true, 
false);
                        nextTokenNotComment = getNextTokenByOffset(tokens, i, 
1, true, true);
 
-                       boolean skipWhitespaceBeforeSemicolonOrComma = 
nextToken == null
+                       boolean skipWhitespaceBeforeNextSignificantToken = 
nextToken == null
                                        || nextToken.getType() == 
ASTokenTypes.TOKEN_SEMICOLON
-                                       || nextToken.getType() == 
ASTokenTypes.TOKEN_COMMA;
+                                       || nextToken.getType() == 
ASTokenTypes.TOKEN_COMMA
+                                       || nextToken.getType() == 
ASTokenTypes.TOKEN_COLON;
 
                        // characters that must appear before the token
                        if (token instanceof MetaDataPayloadToken) {
@@ -472,7 +473,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                boolean isAnyType = 
checkTokenBeforeAnyType(prevTokenNotComment);
                                                boolean isAnyVectorType = 
checkTokensForAnyVectorType(prevTokenNotComment, nextTokenNotComment);
                                                if (!isAnyType && 
!isAnyVectorType && settings.insertSpaceBeforeAndAfterBinaryOperators
-                                                               && 
!skipWhitespaceBeforeSemicolonOrComma) {
+                                                               && 
!skipWhitespaceBeforeNextSignificantToken) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -762,11 +763,11 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                                
blockOpenPending = true;
                                                                if (nextToken 
!= null && nextToken.getType() == ASTokenTypes.TOKEN_SEMICOLON) {
                                                                        
blockStack.remove(blockStack.size() - 1);
-                                                                       if 
(!skipWhitespaceBeforeSemicolonOrComma) {
+                                                                       if 
(!skipWhitespaceBeforeNextSignificantToken) {
                                                                                
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
                                                                        }
                                                                } else if 
(nextTokenNotComment != null && nextTokenNotComment.getType() != 
ASTokenTypes.TOKEN_BLOCK_OPEN
-                                                                               
&& !skipWhitespaceBeforeSemicolonOrComma) {
+                                                                               
&& !skipWhitespaceBeforeNextSignificantToken) {
                                                                        indent 
= increaseIndent(indent);
                                                                        
BlockStackItem stackItem = blockStack.get(blockStack.size() - 1);
                                                                        
stackItem.braces = false;
@@ -794,7 +795,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case 
ASTokenTypes.TOKEN_KEYWORD_CONTINUE:
                                        case ASTokenTypes.TOKEN_KEYWORD_BREAK:
                                        case ASTokenTypes.TOKEN_KEYWORD_RETURN: 
{
-                                               if 
(!skipWhitespaceBeforeSemicolonOrComma) {
+                                               if 
(!skipWhitespaceBeforeNextSignificantToken) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -844,7 +845,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                stackItem.controlFlow = true;
                                                blockStack.add(stackItem);
                                                if 
(settings.insertSpaceAfterKeywordsInControlFlowStatements
-                                                               && 
!skipWhitespaceBeforeSemicolonOrComma) {
+                                                               && 
!skipWhitespaceBeforeNextSignificantToken) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -853,7 +854,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                inControlFlowStatement = true;
                                                blockStack.add(new 
SwitchBlockStackItem(token));
                                                if 
(settings.insertSpaceAfterKeywordsInControlFlowStatements
-                                                               && 
!skipWhitespaceBeforeSemicolonOrComma) {
+                                                               && 
!skipWhitespaceBeforeNextSignificantToken) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -861,7 +862,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case ASTokenTypes.TOKEN_KEYWORD_TRY:
                                        case 
ASTokenTypes.TOKEN_KEYWORD_FINALLY: {
                                                blockStack.add(new 
BlockStackItem(token));
-                                               if 
(!skipWhitespaceBeforeSemicolonOrComma) {
+                                               if 
(!skipWhitespaceBeforeNextSignificantToken) {
                                                        requiredSpace = true;
                                                }
                                                blockOpenPending = true;
@@ -878,12 +879,12 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                        blockOpenPending = true;
                                                        if (nextToken != null 
&& nextToken.getType() == ASTokenTypes.TOKEN_SEMICOLON) {
                                                                
blockStack.remove(blockStack.size() - 1);
-                                                               if 
(!skipWhitespaceBeforeSemicolonOrComma) {
+                                                               if 
(!skipWhitespaceBeforeNextSignificantToken) {
                                                                        
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
                                                                }
                                                        } else if (nextToken != 
null && nextToken.getType() != ASTokenTypes.TOKEN_BLOCK_OPEN
                                                                        && 
nextToken.getType() != ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT
-                                                                       && 
!skipWhitespaceBeforeSemicolonOrComma) {
+                                                                       && 
!skipWhitespaceBeforeNextSignificantToken) {
                                                                indent = 
increaseIndent(indent);
                                                                
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
                                                                
stackItem.braces = false;
@@ -896,12 +897,12 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                blockOpenPending = true;
                                                if (nextToken != null && 
nextToken.getType() == ASTokenTypes.TOKEN_SEMICOLON) {
                                                        
blockStack.remove(blockStack.size() - 1);
-                                                       if 
(!skipWhitespaceBeforeSemicolonOrComma) {
+                                                       if 
(!skipWhitespaceBeforeNextSignificantToken) {
                                                                
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
                                                        }
                                                } else if (nextToken != null && 
nextToken.getType() != ASTokenTypes.TOKEN_BLOCK_OPEN
                                                                && 
nextToken.getType() != ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT
-                                                               && 
!skipWhitespaceBeforeSemicolonOrComma) {
+                                                               && 
!skipWhitespaceBeforeNextSignificantToken) {
                                                        indent = 
increaseIndent(indent);
                                                        numRequiredNewLines = 
Math.max(numRequiredNewLines, 1);
                                                }
@@ -946,13 +947,13 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                break;
                                        }
                                        case ASTokenTypes.TOKEN_KEYWORD_CASE: {
-                                               if 
(!skipWhitespaceBeforeSemicolonOrComma) {
+                                               if 
(!skipWhitespaceBeforeNextSignificantToken) {
                                                        requiredSpace = true;
                                                }
                                                break;
                                        }
                                        case 
ASTokenTypes.TOKEN_KEYWORD_DEFAULT: {
-                                               if (!inCaseOrDefaultClause && 
!skipWhitespaceBeforeSemicolonOrComma) {
+                                               if (!inCaseOrDefaultClause && 
!skipWhitespaceBeforeNextSignificantToken) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -983,7 +984,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case ASTokenTypes.TOKEN_MODIFIER_STATIC:
                                        case 
ASTokenTypes.TOKEN_MODIFIER_VIRTUAL:
                                        case 
ASTokenTypes.TOKEN_NAMESPACE_ANNOTATION: {
-                                               if 
(!skipWhitespaceBeforeSemicolonOrComma) {
+                                               if 
(!skipWhitespaceBeforeNextSignificantToken) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -1022,7 +1023,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case 
ASTokenTypes.TOKEN_OPERATOR_BITWISE_XOR_ASSIGNMENT:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_LOGICAL_AND_ASSIGNMENT:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_LOGICAL_OR_ASSIGNMENT: {
-                                               if 
(settings.insertSpaceBeforeAndAfterBinaryOperators && 
!skipWhitespaceBeforeSemicolonOrComma) {
+                                               if 
(settings.insertSpaceBeforeAndAfterBinaryOperators && 
!skipWhitespaceBeforeNextSignificantToken) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -1031,7 +1032,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                boolean isAnyType = 
checkTokenBeforeAnyType(prevTokenNotComment);
                                                boolean isAnyVectorType = 
checkTokensForAnyVectorType(prevTokenNotComment, nextTokenNotComment);
                                                if (!isAnyType && 
!isAnyVectorType && settings.insertSpaceBeforeAndAfterBinaryOperators
-                                                               && 
!skipWhitespaceBeforeSemicolonOrComma) {
+                                                               && 
!skipWhitespaceBeforeNextSignificantToken) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -1040,7 +1041,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case ASTokenTypes.TOKEN_OPERATOR_MINUS: 
{
                                                boolean isUnary = 
checkTokenBeforePossibleUnaryOperator(prevTokenNotComment);
                                                if (!isUnary && 
settings.insertSpaceBeforeAndAfterBinaryOperators
-                                                               && 
!skipWhitespaceBeforeSemicolonOrComma) {
+                                                               && 
!skipWhitespaceBeforeNextSignificantToken) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -1049,7 +1050,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                if (varOrConstChainLevel == 
blockStack.size()) {
                                                        inVarOrConstDeclaration 
= true;
                                                }
-                                               if 
(settings.insertSpaceAfterCommaDelimiter && 
!skipWhitespaceBeforeSemicolonOrComma) {
+                                               if 
(settings.insertSpaceAfterCommaDelimiter && 
!skipWhitespaceBeforeNextSignificantToken) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -1069,7 +1070,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        }
                                        case ASTokenTypes.TOKEN_ASDOC_COMMENT:
                                        case 
ASTokenTypes.HIDDEN_TOKEN_MULTI_LINE_COMMENT: {
-                                               if 
(!skipWhitespaceBeforeSemicolonOrComma) {
+                                               if 
(!skipWhitespaceBeforeNextSignificantToken) {
                                                        if (nextTokenOrExtra != 
null && nextTokenOrExtra.getType() == TOKEN_TYPE_EXTRA) {
                                                                
numRequiredNewLines = Math.max(0, countNewLinesInExtra(nextTokenOrExtra));
                                                        }
diff --git 
a/formatter/src/test/java/org/apache/royale/formatter/TestObjectLiteral.java 
b/formatter/src/test/java/org/apache/royale/formatter/TestObjectLiteral.java
index b31149d93..c4d4437d7 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestObjectLiteral.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestObjectLiteral.java
@@ -265,13 +265,13 @@ public class TestObjectLiteral extends BaseFormatterTests 
{
                ASTokenFormatter formatter = new ASTokenFormatter(settings);
                String result = formatter.format("file.as",
                // @formatter:off
-                       "var obj:Object = {one: 123.4/* comment */,/* another 
*/two: \"hello world\"};",
+                       "var obj:Object = {one:123.4/* comment */,/* another 
*/two:\"hello world\",three/* more */:false};",
                        // @formatter:on
                        problems
                );
                assertEquals(
                // @formatter:off
-                               "var obj:Object = {one: 123.4 /* comment */, /* 
another */ two: \"hello world\"};",
+                               "var obj:Object = {one: 123.4 /* comment */, /* 
another */ two: \"hello world\", three /* more */: false};",
                                // @formatter:on
                                result);
        }

Reply via email to