You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2021/10/06 22:31:39 UTC

[royale-compiler] 02/04: formatter: fix extra spaces before and after * type

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 <jo...@apache.org>
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);
+	}
 }