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/11/22 23:11:33 UTC

[royale-compiler] branch develop updated (54c322b -> 3043a5c)

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

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


    from 54c322b  Fixes #197. Similar to #196
     new 5f7e57a  formatter: chained variable declarations
     new cf33da7  formatter: like square and curly brackets, parentheses are on the block stack
     new 0e872b5  formatter: whitespace between block close and comments
     new 3043a5c  formatter: tests

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/royale/formatter/FORMATTER.java     | 54 ++++++++++++++++++++--
 .../apache/royale/formatter/TestArrayLiteral.java  | 50 ++++++++++++++++++++
 .../royale/formatter/TestMultiLineComment.java     | 26 +++++++++++
 .../apache/royale/formatter/TestObjectLiteral.java |  3 +-
 .../royale/formatter/TestSingleLineComment.java    | 26 +++++++++++
 .../royale/formatter/TestSwitchStatement.java      | 52 +++++++++++++++++++++
 .../royale/formatter/TestVariableDeclaration.java  | 19 ++++++++
 7 files changed, 223 insertions(+), 7 deletions(-)

[royale-compiler] 03/04: formatter: whitespace between block close and comments

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

[royale-compiler] 04/04: formatter: tests

Posted by jo...@apache.org.
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 3043a5c7614f4bcf67bb80f455682b0df310c330
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Mon Nov 22 15:07:50 2021 -0800

    formatter: tests
---
 .../apache/royale/formatter/TestArrayLiteral.java  | 50 ++++++++++++++++++++++
 .../apache/royale/formatter/TestObjectLiteral.java |  3 +-
 2 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/formatter/src/test/java/org/apache/royale/formatter/TestArrayLiteral.java b/formatter/src/test/java/org/apache/royale/formatter/TestArrayLiteral.java
index 2a28563..841803e 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestArrayLiteral.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestArrayLiteral.java
@@ -76,6 +76,56 @@ public class TestArrayLiteral extends BaseFormatterTests {
 	}
 
 	@Test
+	public void testMultipleNumbersOnMultipleLines1() {
+		FORMATTER formatter = new FORMATTER();
+		formatter.insertSpaceBeforeAndAfterBinaryOperators = true;
+		String result = formatter.formatActionScriptText(
+		// @formatter:off
+			"var array:Array = [123.4, 567.8,\n" +
+			"\t901.2];\n" +
+			"statement;",
+			// @formatter:on
+			problems
+		);
+		assertEquals(
+		// @formatter:off
+				"var array:Array = [123.4, 567.8,\n" +
+				"\t\t901.2];\n" +
+				"statement;",
+				// @formatter:on
+				result);
+	}
+
+	@Test
+	public void testMultipleNumbersOnMultipleLines2() {
+		FORMATTER formatter = new FORMATTER();
+		formatter.insertSpaceBeforeAndAfterBinaryOperators = true;
+		String result = formatter.formatActionScriptText(
+		// @formatter:off
+			"var array:Array =\n" +
+			"\t[\n" +
+			"\t\t123.4,\n" +
+			"\t\t567.8,\n" +
+			"\t\t901.2\n" +
+			"\t];\n" +
+			"statement;",
+			// @formatter:on
+			problems
+		);
+		assertEquals(
+		// @formatter:off
+				"var array:Array =\n" +
+				"\t[\n" +
+				"\t\t123.4,\n" +
+				"\t\t567.8,\n" +
+				"\t\t901.2\n" +
+				"\t];\n" +
+				"statement;",
+				// @formatter:on
+				result);
+	}
+
+	@Test
 	public void testMultipleStringsOnOneLine() {
 		FORMATTER formatter = new FORMATTER();
 		formatter.insertSpaceBeforeAndAfterBinaryOperators = true;
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 91fc018..e6b0748 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestObjectLiteral.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestObjectLiteral.java
@@ -99,7 +99,7 @@ public class TestObjectLiteral extends BaseFormatterTests {
 	}
 
 	@Test
-	public void testMultipleFieldsOnMultipleLines() {
+	public void testMultipleFieldsOnMultipleLines1() {
 		FORMATTER formatter = new FORMATTER();
 		formatter.insertSpaceBeforeAndAfterBinaryOperators = true;
 		String result = formatter.formatActionScriptText(
@@ -123,7 +123,6 @@ public class TestObjectLiteral extends BaseFormatterTests {
 				result);
 	}
 
-
 	@Test
 	public void testMultipleFieldsOnMultipleLines2() {
 		FORMATTER formatter = new FORMATTER();

[royale-compiler] 01/04: formatter: chained variable declarations

Posted by jo...@apache.org.
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 5f7e57ad86142895c35e4a8da46b60bd78eb9290
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Mon Nov 22 14:15:03 2021 -0800

    formatter: chained variable declarations
---
 .../java/org/apache/royale/formatter/FORMATTER.java   | 17 +++++++++++++++++
 .../royale/formatter/TestVariableDeclaration.java     | 19 +++++++++++++++++++
 2 files changed, 36 insertions(+)

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 1f4d27a..857c6fc 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -661,6 +661,7 @@ public class FORMATTER {
 		boolean indentedStatement = false;
 		boolean caseOrDefaultBlockOpenPending = false;
 		boolean skipFormatting = false;
+		int varOrConstChainLevel = -1;
 		List<BlockStackItem> blockStack = new ArrayList<BlockStackItem>();
 		int controlFlowParenStack = 0;
 		int ternaryStack = 0;
@@ -927,6 +928,7 @@ public class FORMATTER {
 							indent = decreaseIndent(indent);
 						}
 						inVarOrConstDeclaration = false;
+						varOrConstChainLevel = -1;
 						break;
 					}
 					case ASTokenTypes.TOKEN_ASDOC_COMMENT: {
@@ -1099,6 +1101,7 @@ public class FORMATTER {
 					case ASTokenTypes.TOKEN_KEYWORD_CONST: {
 						inVarOrConstDeclaration = true;
 						requiredSpace = true;
+						varOrConstChainLevel = blockStack.size();
 						break;
 					}
 					case ASTokenTypes.TOKEN_KEYWORD_CATCH:
@@ -1185,6 +1188,9 @@ public class FORMATTER {
 						if (inControlFlowStatement) {
 							controlFlowParenStack++;
 						}
+						else {
+							blockStack.add(new BlockStackItem(token));
+						}
 						break;
 					}
 					case ASTokenTypes.TOKEN_PAREN_CLOSE: {
@@ -1209,6 +1215,14 @@ public class FORMATTER {
 								}
 							}
 						}
+						else {
+							if (!blockStack.isEmpty()) {
+								BlockStackItem item = blockStack.get(blockStack.size() - 1);
+								if (item.token.getType() == ASTokenTypes.TOKEN_PAREN_OPEN) {
+									blockStack.remove(item);
+								}
+							}
+						}
 						break;
 					}
 					case ASTokenTypes.TOKEN_KEYWORD_CASE: {
@@ -1310,6 +1324,9 @@ public class FORMATTER {
 						break;
 					}
 					case ASTokenTypes.TOKEN_COMMA: {
+						if (varOrConstChainLevel == blockStack.size()) {
+							inVarOrConstDeclaration = true;
+						}
 						if (insertSpaceAfterCommaDelimiter && !skipWhitespaceBeforeSemicolon) {
 							requiredSpace = true;
 						}
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 4959baa..37b2a9c 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestVariableDeclaration.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestVariableDeclaration.java
@@ -119,4 +119,23 @@ public class TestVariableDeclaration extends BaseFormatterTests {
 				// @formatter:on
 				result);
 	}
+
+	@Test
+	public void testChained() {
+		FORMATTER formatter = new FORMATTER();
+		formatter.insertSpaceAfterKeywordsInControlFlowStatements = true;
+		formatter.placeOpenBraceOnNewLine = true;
+		formatter.insertSpaces = false;
+		String result = formatter.formatActionScriptText(
+		// @formatter:off
+			"var myVar:Number = what(hi, 2), myVar2:Number = 456.7;",
+			// @formatter:on
+			problems
+		);
+		assertEquals(
+		// @formatter:off
+				"var myVar:Number = what(hi, 2), myVar2:Number = 456.7;",
+				// @formatter:on
+				result);
+	}
 }

[royale-compiler] 02/04: formatter: like square and curly brackets, parentheses are on the block stack

Posted by jo...@apache.org.
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 cf33da792dc6a7f63a00dd134984c8479d4ff3af
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Mon Nov 22 14:28:46 2021 -0800

    formatter: like square and curly brackets, parentheses are on the block stack
---
 .../org/apache/royale/formatter/FORMATTER.java     | 42 +++++++++++++++-------
 1 file changed, 29 insertions(+), 13 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 857c6fc..775be8a 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -980,8 +980,7 @@ public class FORMATTER {
 			} else {
 				switch (token.getType()) {
 					case ASTokenTypes.TOKEN_SEMICOLON: {
-						if (inControlFlowStatement && !blockStack.isEmpty() && blockStack.get(blockStack.size() - 1).token
-								.getType() == ASTokenTypes.TOKEN_KEYWORD_FOR) {
+						if (inControlFlowStatement && isInForStatement(blockStack)) {
 							if (insertSpaceAfterSemicolonInForStatements) {
 								requiredSpace = true;
 							}
@@ -1185,15 +1184,19 @@ public class FORMATTER {
 						break;
 					}
 					case ASTokenTypes.TOKEN_PAREN_OPEN: {
+						blockStack.add(new BlockStackItem(token));
 						if (inControlFlowStatement) {
 							controlFlowParenStack++;
 						}
-						else {
-							blockStack.add(new BlockStackItem(token));
-						}
 						break;
 					}
 					case ASTokenTypes.TOKEN_PAREN_CLOSE: {
+						if (!blockStack.isEmpty()) {
+							BlockStackItem item = blockStack.get(blockStack.size() - 1);
+							if (item.token.getType() == ASTokenTypes.TOKEN_PAREN_OPEN) {
+								blockStack.remove(item);
+							}
+						}
 						if (inControlFlowStatement) {
 							controlFlowParenStack--;
 							if (controlFlowParenStack <= 0) {
@@ -1215,14 +1218,6 @@ public class FORMATTER {
 								}
 							}
 						}
-						else {
-							if (!blockStack.isEmpty()) {
-								BlockStackItem item = blockStack.get(blockStack.size() - 1);
-								if (item.token.getType() == ASTokenTypes.TOKEN_PAREN_OPEN) {
-									blockStack.remove(item);
-								}
-							}
-						}
 						break;
 					}
 					case ASTokenTypes.TOKEN_KEYWORD_CASE: {
@@ -1435,6 +1430,27 @@ public class FORMATTER {
 		return builder.toString();
 	}
 
+	private boolean isInForStatement(List<BlockStackItem> blockStack) {
+		for (int i = blockStack.size() - 1; i >= 0; i--) {
+			BlockStackItem item = blockStack.get(i);
+			switch (item.token.getType()) {
+				case ASTokenTypes.TOKEN_BLOCK_OPEN:
+				case ASTokenTypes.TOKEN_SQUARE_OPEN:
+				case ASTokenTypes.TOKEN_PAREN_OPEN: {
+					// these tokens are fine, keep searching
+					break;
+				}
+				case ASTokenTypes.TOKEN_KEYWORD_FOR: {
+					return true;
+				}
+				default: {
+					return false;
+				}
+			}
+		}
+		return false;
+	}
+
 	private boolean isInListing(String lineText, boolean alreadyInListing) {
 		int searchIndex = 0;
 		boolean inListing = alreadyInListing;