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;