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
The following commit(s) were added to refs/heads/develop by this push:
new b4dda35 formatter: fix collapseEmptyBlocks
b4dda35 is described below
commit b4dda358d4c922cad922683f203109088abf9acb
Author: Josh Tynjala <[email protected]>
AuthorDate: Thu Feb 24 14:29:12 2022 -0800
formatter: fix collapseEmptyBlocks
---
.../org/apache/royale/formatter/FORMATTER.java | 32 +++++++++++++++-------
.../royale/formatter/TestClassDeclaration.java | 20 ++++++++++++++
.../royale/formatter/TestDoWhileStatement.java | 22 +++++++++++++++
.../royale/formatter/TestElseIfStatement.java | 26 ++++++++++++++++++
.../apache/royale/formatter/TestElseStatement.java | 23 ++++++++++++++++
.../royale/formatter/TestForEachStatement.java | 20 ++++++++++++++
.../royale/formatter/TestForInStatement.java | 20 ++++++++++++++
.../apache/royale/formatter/TestForStatement.java | 20 ++++++++++++++
.../royale/formatter/TestFunctionDeclaration.java | 20 ++++++++++++++
.../apache/royale/formatter/TestIfStatement.java | 22 +++++++++++++--
.../royale/formatter/TestInterfaceDeclaration.java | 20 ++++++++++++++
.../royale/formatter/TestMethodDeclaration.java | 26 ++++++++++++++++++
.../royale/formatter/TestPackageDeclaration.java | 20 ++++++++++++++
.../royale/formatter/TestWhileStatement.java | 20 ++++++++++++++
14 files changed, 299 insertions(+), 12 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 cddc59f..af40ec4 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -692,6 +692,11 @@ public class FORMATTER {
if (prevToken != null &&
prevToken.getType() == ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT) {
newLinesInExtra++;
}
+ boolean oneLineBlock =
prevToken != null && prevToken.getType() == ASTokenTypes.TOKEN_BLOCK_OPEN
+ && nextToken !=
null && nextToken.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE;
+ if (oneLineBlock &&
collapseEmptyBlocks) {
+ newLinesInExtra = 0;
+ }
numRequiredNewLines =
Math.max(numRequiredNewLines, newLinesInExtra);
if (!indentedStatement &&
numRequiredNewLines > 0 && prevTokenNotComment != null
&&
prevTokenNotComment.getType() != ASTokenTypes.TOKEN_SEMICOLON
@@ -749,12 +754,14 @@ public class FORMATTER {
indentedStatement = false;
indent =
decreaseIndent(indent);
}
- boolean oneLineBlock =
nextToken != null
- &&
nextToken.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE;
+ boolean oneLineBlock =
nextToken != null && nextToken.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE;
boolean needsNewLine =
placeOpenBraceOnNewLine && (!collapseEmptyBlocks || !oneLineBlock);
if (needsNewLine) {
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
} else {
+ if
(oneLineBlock && collapseEmptyBlocks) {
+
numRequiredNewLines = 0;
+ }
requiredSpace =
true;
}
} else {
@@ -788,7 +795,8 @@ public class FORMATTER {
if
(stackItem.token.getType() == ASTokenTypes.TOKEN_KEYWORD_SWITCH) {
SwitchBlockStackItem switchStackItem = (SwitchBlockStackItem) stackItem;
if
(switchStackItem.clauseCount > 0
-
&& (prevToken == null || prevToken.getType() !=
ASTokenTypes.TOKEN_BLOCK_CLOSE)) {
+
&& (prevToken == null
+
|| prevToken.getType() != ASTokenTypes.TOKEN_BLOCK_CLOSE)) {
indent
= decreaseIndent(indent);
}
}
@@ -953,7 +961,8 @@ public class FORMATTER {
switch (token.getType()) {
case ASTokenTypes.TOKEN_BLOCK_OPEN: {
if (blockOpenPending) {
- boolean oneLineBlock =
nextToken != null && nextToken.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE;
+ boolean oneLineBlock =
nextToken != null
+ &&
nextToken.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE;
if (placeOpenBraceOnNewLine &&
(!collapseEmptyBlocks || !oneLineBlock)) {
indent =
increaseIndent(indent);
}
@@ -1008,8 +1017,9 @@ public class FORMATTER {
}
}
if (!inControlFlowStatement) {
- if (nextToken != null
&& (nextToken.getType() == ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT
- ||
nextToken.getType() == ASTokenTypes.HIDDEN_TOKEN_MULTI_LINE_COMMENT)) {
+ 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);
@@ -1138,7 +1148,8 @@ public class FORMATTER {
break;
}
case ASTokenTypes.TOKEN_KEYWORD_ELSE: {
- if (nextTokenNotComment != null
&& nextTokenNotComment.getType() == ASTokenTypes.TOKEN_KEYWORD_IF) {
+ if (nextTokenNotComment != null
+ &&
nextTokenNotComment.getType() == ASTokenTypes.TOKEN_KEYWORD_IF) {
requiredSpace = true;
} else {
blockStack.add(new
BlockStackItem(token));
@@ -1179,8 +1190,9 @@ public class FORMATTER {
inCaseOrDefaultClause = false;
caseOrDefaultBlockOpenPending = true;
indent =
increaseIndent(indent);
- if (nextToken
!= null && (nextToken.getType() == ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT
- ||
nextToken.getType() == ASTokenTypes.HIDDEN_TOKEN_MULTI_LINE_COMMENT)) {
+ 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);
@@ -1918,7 +1930,7 @@ public class FORMATTER {
if (nextToken != null &&
nextToken.getType() != MXMLTokenTypes.TOKEN_TAG_END
&& nextToken.getType()
!= MXMLTokenTypes.TOKEN_EMPTY_TAG_END) {
attributeIndent =
getAttributeIndent(token);
- if(nextToken.getType() !=
TOKEN_TYPE_EXTRA) {
+ if (nextToken.getType() !=
TOKEN_TYPE_EXTRA) {
requiredSpace = true;
}
}
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestClassDeclaration.java
b/formatter/src/test/java/org/apache/royale/formatter/TestClassDeclaration.java
index 3109b92..c30db9f 100644
---
a/formatter/src/test/java/org/apache/royale/formatter/TestClassDeclaration.java
+++
b/formatter/src/test/java/org/apache/royale/formatter/TestClassDeclaration.java
@@ -114,4 +114,24 @@ public class TestClassDeclaration extends
BaseFormatterTests {
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "class MyClass {\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "class MyClass {}",
+ // @formatter:on
+ result);
+ }
}
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestDoWhileStatement.java
b/formatter/src/test/java/org/apache/royale/formatter/TestDoWhileStatement.java
index b96a2a3..1e3a5d4 100644
---
a/formatter/src/test/java/org/apache/royale/formatter/TestDoWhileStatement.java
+++
b/formatter/src/test/java/org/apache/royale/formatter/TestDoWhileStatement.java
@@ -366,4 +366,26 @@ public class TestDoWhileStatement extends
BaseFormatterTests {
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "do {\n" +
+ "}\n" +
+ "while (condition1);",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "do {}\n" +
+ "while (condition1);",
+ // @formatter:on
+ result);
+ }
}
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestElseIfStatement.java
b/formatter/src/test/java/org/apache/royale/formatter/TestElseIfStatement.java
index 8b245db..af62b55 100644
---
a/formatter/src/test/java/org/apache/royale/formatter/TestElseIfStatement.java
+++
b/formatter/src/test/java/org/apache/royale/formatter/TestElseIfStatement.java
@@ -500,4 +500,30 @@ public class TestElseIfStatement extends
BaseFormatterTests {
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "if (condition1) {\n" +
+ "}\n" +
+ "else if (condition2) {\n" +
+ "}\n" +
+ "else {\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "if (condition1) {}\n" +
+ "else if (condition2) {}\n" +
+ "else {}",
+ // @formatter:on
+ result);
+ }
}
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestElseStatement.java
b/formatter/src/test/java/org/apache/royale/formatter/TestElseStatement.java
index 5df628d..768f5b6 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestElseStatement.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestElseStatement.java
@@ -539,4 +539,27 @@ public class TestElseStatement extends BaseFormatterTests {
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "if (condition1) {\n" +
+ "}\n" +
+ "else {\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "if (condition1) {}\n" +
+ "else {}",
+ // @formatter:on
+ result);
+ }
}
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestForEachStatement.java
b/formatter/src/test/java/org/apache/royale/formatter/TestForEachStatement.java
index 6325bc0..709700f 100644
---
a/formatter/src/test/java/org/apache/royale/formatter/TestForEachStatement.java
+++
b/formatter/src/test/java/org/apache/royale/formatter/TestForEachStatement.java
@@ -316,4 +316,24 @@ public class TestForEachStatement extends
BaseFormatterTests {
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "for each (var item:Object in array) {\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "for each (var item:Object in array) {}",
+ // @formatter:on
+ result);
+ }
}
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestForInStatement.java
b/formatter/src/test/java/org/apache/royale/formatter/TestForInStatement.java
index bbb9a51..f3503e5 100644
---
a/formatter/src/test/java/org/apache/royale/formatter/TestForInStatement.java
+++
b/formatter/src/test/java/org/apache/royale/formatter/TestForInStatement.java
@@ -317,4 +317,24 @@ public class TestForInStatement extends BaseFormatterTests
{
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "for (var key:String in object) {\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "for (var key:String in object) {}",
+ // @formatter:on
+ result);
+ }
}
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestForStatement.java
b/formatter/src/test/java/org/apache/royale/formatter/TestForStatement.java
index 48032ce..28f6dfb 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestForStatement.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestForStatement.java
@@ -346,4 +346,24 @@ public class TestForStatement extends BaseFormatterTests {
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "for (var i:int = 0; i < 3; i++) {\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "for (var i:int = 0; i < 3; i++) {}",
+ // @formatter:on
+ result);
+ }
}
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestFunctionDeclaration.java
b/formatter/src/test/java/org/apache/royale/formatter/TestFunctionDeclaration.java
index 13de967..0331109 100644
---
a/formatter/src/test/java/org/apache/royale/formatter/TestFunctionDeclaration.java
+++
b/formatter/src/test/java/org/apache/royale/formatter/TestFunctionDeclaration.java
@@ -320,4 +320,24 @@ public class TestFunctionDeclaration extends
BaseFormatterTests {
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "function myFunction() {\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "function myFunction() {}",
+ // @formatter:on
+ result);
+ }
}
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestIfStatement.java
b/formatter/src/test/java/org/apache/royale/formatter/TestIfStatement.java
index d679d47..d3ad0ba 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestIfStatement.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestIfStatement.java
@@ -404,14 +404,12 @@ public class TestIfStatement extends BaseFormatterTests {
formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
formatter.placeOpenBraceOnNewLine = true;
formatter.insertSpaces = false;
- System.err.println("**** BEFORE");
String result = formatter.formatActionScriptText(
// @formatter:off
"{if (condition1) if (condition2) statement;}",
// @formatter:on
problems
);
- System.err.println("**** AFTER");
assertEquals(
// @formatter:off
"{\n" +
@@ -422,4 +420,24 @@ public class TestIfStatement extends BaseFormatterTests {
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "if (condition1) {\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "if (condition1) {}",
+ // @formatter:on
+ result);
+ }
}
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestInterfaceDeclaration.java
b/formatter/src/test/java/org/apache/royale/formatter/TestInterfaceDeclaration.java
index c367401..7526b41 100644
---
a/formatter/src/test/java/org/apache/royale/formatter/TestInterfaceDeclaration.java
+++
b/formatter/src/test/java/org/apache/royale/formatter/TestInterfaceDeclaration.java
@@ -167,4 +167,24 @@ public class TestInterfaceDeclaration extends
BaseFormatterTests {
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "interface MyInterface {\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "interface MyInterface {}",
+ // @formatter:on
+ result);
+ }
}
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestMethodDeclaration.java
b/formatter/src/test/java/org/apache/royale/formatter/TestMethodDeclaration.java
index 9d36fdb..0ec7054 100644
---
a/formatter/src/test/java/org/apache/royale/formatter/TestMethodDeclaration.java
+++
b/formatter/src/test/java/org/apache/royale/formatter/TestMethodDeclaration.java
@@ -138,4 +138,30 @@ public class TestMethodDeclaration extends
BaseFormatterTests {
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ formatter.insertSpaces = false;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "class ClassWithMethod\n" +
+ "{\n" +
+ "\tfunction myFunction() {\n" +
+ "\t}\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "class ClassWithMethod {\n" +
+ "\tfunction myFunction() {}\n" +
+ "}",
+ // @formatter:on
+ result);
+ }
}
\ No newline at end of file
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestPackageDeclaration.java
b/formatter/src/test/java/org/apache/royale/formatter/TestPackageDeclaration.java
index 846d9e9..9f8b5d3 100644
---
a/formatter/src/test/java/org/apache/royale/formatter/TestPackageDeclaration.java
+++
b/formatter/src/test/java/org/apache/royale/formatter/TestPackageDeclaration.java
@@ -140,4 +140,24 @@ public class TestPackageDeclaration extends
BaseFormatterTests {
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "package com.example {\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "package com.example {}",
+ // @formatter:on
+ result);
+ }
}
diff --git
a/formatter/src/test/java/org/apache/royale/formatter/TestWhileStatement.java
b/formatter/src/test/java/org/apache/royale/formatter/TestWhileStatement.java
index d712fb3..22c8f37 100644
---
a/formatter/src/test/java/org/apache/royale/formatter/TestWhileStatement.java
+++
b/formatter/src/test/java/org/apache/royale/formatter/TestWhileStatement.java
@@ -317,4 +317,24 @@ public class TestWhileStatement extends BaseFormatterTests
{
// @formatter:on
result);
}
+
+ @Test
+ public void testCollapseEmptyBlock() {
+ FORMATTER formatter = new FORMATTER();
+ formatter.insertSpaceAfterKeywordsInControlFlowStatements =
true;
+ formatter.placeOpenBraceOnNewLine = false;
+ formatter.collapseEmptyBlocks = true;
+ String result = formatter.formatActionScriptText(
+ // @formatter:off
+ "while (condition1) {\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "while (condition1) {}",
+ // @formatter:on
+ result);
+ }
}