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 5b05a53b65a90e2f1ef3846b216e3a4118fa0a76
Author: Josh Tynjala <[email protected]>
AuthorDate: Wed Oct 6 14:24:47 2021 -0700

    formatter: fix extra spaces before and after * type
---
 .../org/apache/royale/formatter/FORMATTER.java     | 29 +++++++++++++++--
 .../royale/formatter/TestVariableDeclaration.java  | 38 ++++++++++++++++++++++
 2 files changed, 65 insertions(+), 2 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 51cddb5..4b542eb 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -685,7 +685,6 @@ class FORMATTER {
                                        case 
ASTokenTypes.TOKEN_OPERATOR_GREATER_THAN:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_LESS_THAN_EQUALS:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_GREATER_THAN_EQUALS:
-                                       case ASTokenTypes.TOKEN_OPERATOR_STAR:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_DIVISION:
                                        case ASTokenTypes.TOKEN_OPERATOR_MODULO:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_BITWISE_AND:
@@ -714,6 +713,15 @@ class FORMATTER {
                                                }
                                                break;
                                        }
+                                       case ASTokenTypes.TOKEN_OPERATOR_STAR: {
+                                               boolean isAnyType = 
checkTokenBeforeAnyType(prevTokenNotComment);
+                                               boolean isAnyVectorType = 
checkTokensForAnyVectorType(prevTokenNotComment, nextTokenNotComment);
+                                               if (!isAnyType && 
!isAnyVectorType && insertSpaceBeforeAndAfterBinaryOperators
+                                                               && 
!skipWhitespaceBeforeSemicolon) {
+                                                       requiredSpace = true;
+                                               }
+                                               break;
+                                       }
                                        case ASTokenTypes.TOKEN_OPERATOR_PLUS:
                                        case ASTokenTypes.TOKEN_OPERATOR_MINUS: 
{
                                                boolean isUnary = 
checkTokenBeforeUnaryOperator(prevTokenNotComment);
@@ -1113,7 +1121,6 @@ class FORMATTER {
                                        case 
ASTokenTypes.TOKEN_OPERATOR_GREATER_THAN:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_LESS_THAN_EQUALS:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_GREATER_THAN_EQUALS:
-                                       case ASTokenTypes.TOKEN_OPERATOR_STAR:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_DIVISION:
                                        case ASTokenTypes.TOKEN_OPERATOR_MODULO:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_TERNARY:
@@ -1143,6 +1150,15 @@ class FORMATTER {
                                                }
                                                break;
                                        }
+                                       case ASTokenTypes.TOKEN_OPERATOR_STAR: {
+                                               boolean isAnyType = 
checkTokenBeforeAnyType(prevTokenNotComment);
+                                               boolean isAnyVectorType = 
checkTokensForAnyVectorType(prevTokenNotComment, nextTokenNotComment);
+                                               if (!isAnyType && 
!isAnyVectorType && insertSpaceBeforeAndAfterBinaryOperators
+                                                               && 
!skipWhitespaceBeforeSemicolon) {
+                                                       requiredSpace = true;
+                                               }
+                                               break;
+                                       }
                                        case ASTokenTypes.TOKEN_OPERATOR_PLUS:
                                        case ASTokenTypes.TOKEN_OPERATOR_MINUS: 
{
                                                boolean isUnary = 
checkTokenBeforeUnaryOperator(prevTokenNotComment);
@@ -1355,6 +1371,15 @@ class FORMATTER {
                return builder.toString();
        }
 
+       private boolean checkTokenBeforeAnyType(IASToken token) {
+               return token.getType() == ASTokenTypes.TOKEN_COLON;
+       }
+
+       private boolean checkTokensForAnyVectorType(IASToken prevToken, 
IASToken nextToken) {
+               return prevToken != null && nextToken != null && 
prevToken.getType() == ASTokenTypes.TOKEN_TYPED_COLLECTION_OPEN
+                               && nextToken.getType() == 
ASTokenTypes.TOKEN_TYPED_COLLECTION_CLOSE;
+       }
+
        private boolean checkTokenBeforeUnaryOperator(IASToken token) {
                return (token instanceof ASToken) ? ((ASToken) 
token).isOperator()
                                || token.getType() == 
ASTokenTypes.TOKEN_SQUARE_OPEN || token.getType() == 
ASTokenTypes.TOKEN_PAREN_OPEN
diff --git 
a/formatter/src/test/java/org/apache/royale/formatter/TestVariableDeclaration.java
 
b/formatter/src/test/java/org/apache/royale/formatter/TestVariableDeclaration.java
index 51cb0a5..c769066 100644
--- 
a/formatter/src/test/java/org/apache/royale/formatter/TestVariableDeclaration.java
+++ 
b/formatter/src/test/java/org/apache/royale/formatter/TestVariableDeclaration.java
@@ -81,4 +81,42 @@ public class TestVariableDeclaration extends 
BaseFormatterTests {
                                // @formatter:on
                                result);
        }
+
+       @Test
+       public void testWithAnyType() {
+               FORMATTER formatter = new FORMATTER();
+               formatter.insertSpaceAfterKeywordsInControlFlowStatements = 
true;
+               formatter.placeOpenBraceOnNewLine = true;
+               formatter.insertSpaces = false;
+               String result = formatter.formatText(
+               // @formatter:off
+                       "var myVar:*;",
+                       // @formatter:on
+                       problems
+               );
+               assertEquals(
+               // @formatter:off
+                               "var myVar:*;",
+                               // @formatter:on
+                               result);
+       }
+
+       @Test
+       public void testWithVectorAnyType() {
+               FORMATTER formatter = new FORMATTER();
+               formatter.insertSpaceAfterKeywordsInControlFlowStatements = 
true;
+               formatter.placeOpenBraceOnNewLine = true;
+               formatter.insertSpaces = false;
+               String result = formatter.formatText(
+               // @formatter:off
+                       "var myVar:Vector.<*>;",
+                       // @formatter:on
+                       problems
+               );
+               assertEquals(
+               // @formatter:off
+                               "var myVar:Vector.<*>;",
+                               // @formatter:on
+                               result);
+       }
 }

Reply via email to