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); + } }
