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 30d25247448daadcd337fc32e7fd5c1a04c5e407
Author: Josh Tynjala <joshtynj...@apache.org>
AuthorDate: Wed May 18 09:51:03 2022 -0700

    formatter: some fixes for indentation between paren open and paren close, 
if they span multiple lines
---
 .../org/apache/royale/formatter/FORMATTER.java     | 79 ++++++++++++----------
 .../royale/formatter/TestFunctionDeclaration.java  | 14 ++--
 .../apache/royale/formatter/TestIfStatement.java   | 25 +++++++
 3 files changed, 74 insertions(+), 44 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 a1bc2b024..38f429fe7 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -818,6 +818,16 @@ public class FORMATTER {
                                                }
                                                break;
                                        }
+                                       case ASTokenTypes.TOKEN_PAREN_CLOSE: {
+                                               if (!blockStack.isEmpty()) {
+                                                       BlockStackItem item = 
blockStack.get(blockStack.size() - 1);
+                                                       if 
(item.token.getType() == ASTokenTypes.TOKEN_PAREN_OPEN) {
+                                                               indent = 
decreaseIndent(indent);
+                                                               
blockStack.remove(item);
+                                                       }
+                                               }
+                                               break;
+                                       }
                                        case ASTokenTypes.TOKEN_KEYWORD_AS:
                                        case ASTokenTypes.TOKEN_KEYWORD_IS:
                                        case ASTokenTypes.TOKEN_KEYWORD_IN:
@@ -1072,6 +1082,38 @@ public class FORMATTER {
                                                indent = increaseIndent(indent);
                                                blockStack.add(new 
BlockStackItem(token));
                                                break;
+                                       case ASTokenTypes.TOKEN_PAREN_OPEN: {
+                                               indent = increaseIndent(indent);
+                                               blockStack.add(new 
BlockStackItem(token));
+                                               if (inControlFlowStatement) {
+                                                       controlFlowParenStack++;
+                                               }
+                                               break;
+                                       }
+                                       case ASTokenTypes.TOKEN_PAREN_CLOSE: {
+                                               if (inControlFlowStatement) {
+                                                       controlFlowParenStack--;
+                                                       if 
(controlFlowParenStack <= 0) {
+                                                               
inControlFlowStatement = false;
+                                                               
controlFlowParenStack = 0;
+                                                               
blockOpenPending = true;
+                                                               if (nextToken 
!= null && nextToken.getType() == ASTokenTypes.TOKEN_SEMICOLON) {
+                                                                       
blockStack.remove(blockStack.size() - 1);
+                                                                       if 
(!skipWhitespaceBeforeSemicolon) {
+                                                                               
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
+                                                                       }
+                                                               } else if 
(nextToken != null && nextToken.getType() != ASTokenTypes.TOKEN_BLOCK_OPEN
+                                                                               
&& nextToken.getType() != ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT
+                                                                               
&& !skipWhitespaceBeforeSemicolon) {
+                                                                       indent 
= increaseIndent(indent);
+                                                                       
BlockStackItem item = blockStack.get(blockStack.size() - 1);
+                                                                       
item.braces = false;
+                                                                       
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
+                                                               }
+                                                       }
+                                               }
+                                               break;
+                                       }
                                        case 
ASTokenTypes.TOKEN_OPERATOR_INCREMENT:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_DECREMENT: {
                                                if (!inControlFlowStatement && 
prevToken != null
@@ -1211,43 +1253,6 @@ public class FORMATTER {
                                                }
                                                break;
                                        }
-                                       case ASTokenTypes.TOKEN_PAREN_OPEN: {
-                                               blockStack.add(new 
BlockStackItem(token));
-                                               if (inControlFlowStatement) {
-                                                       controlFlowParenStack++;
-                                               }
-                                               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) {
-                                                               
inControlFlowStatement = false;
-                                                               
controlFlowParenStack = 0;
-                                                               
blockOpenPending = true;
-                                                               if (nextToken 
!= null && nextToken.getType() == ASTokenTypes.TOKEN_SEMICOLON) {
-                                                                       
blockStack.remove(blockStack.size() - 1);
-                                                                       if 
(!skipWhitespaceBeforeSemicolon) {
-                                                                               
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
-                                                                       }
-                                                               } else if 
(nextToken != null && nextToken.getType() != ASTokenTypes.TOKEN_BLOCK_OPEN
-                                                                               
&& nextToken.getType() != ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT
-                                                                               
&& !skipWhitespaceBeforeSemicolon) {
-                                                                       indent 
= increaseIndent(indent);
-                                                                       
BlockStackItem item = blockStack.get(blockStack.size() - 1);
-                                                                       
item.braces = false;
-                                                                       
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
-                                                               }
-                                                       }
-                                               }
-                                               break;
-                                       }
                                        case ASTokenTypes.TOKEN_KEYWORD_CASE: {
                                                if 
(!skipWhitespaceBeforeSemicolon) {
                                                        requiredSpace = true;
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 033110935..b473097a4 100644
--- 
a/formatter/src/test/java/org/apache/royale/formatter/TestFunctionDeclaration.java
+++ 
b/formatter/src/test/java/org/apache/royale/formatter/TestFunctionDeclaration.java
@@ -212,7 +212,7 @@ public class TestFunctionDeclaration extends 
BaseFormatterTests {
                assertEquals(
                // @formatter:off
                                "function myFunction(p1:String,\n" +
-                               "\tp2:Number):void\n" +
+                               "\t\tp2:Number):void\n" +
                                "{\n" +
                                "\tstatement;\n" +
                                "\tstatement;\n" +
@@ -289,9 +289,9 @@ public class TestFunctionDeclaration extends 
BaseFormatterTests {
                assertEquals(
                // @formatter:off
                                "(function myFunction(...rest)\n" +
-                               "{\n" +
-                               "\tstatement;\n" +
-                               "});",
+                               "\t{\n" +
+                               "\t\tstatement;\n" +
+                               "\t});",
                                // @formatter:on
                                result);
        }
@@ -314,9 +314,9 @@ public class TestFunctionDeclaration extends 
BaseFormatterTests {
                assertEquals(
                // @formatter:off
                                "identifier(function myFunction(...rest)\n" +
-                               "{\n" +
-                               "\tstatement;\n" +
-                               "}, 123.4);",
+                               "\t{\n" +
+                               "\t\tstatement;\n" +
+                               "\t}, 123.4);",
                                // @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 d3ad0ba4d..8c704b5e7 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestIfStatement.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestIfStatement.java
@@ -440,4 +440,29 @@ public class TestIfStatement extends BaseFormatterTests {
                                // @formatter:on
                                result);
        }
+
+       @Test
+       public void testConditionsOnMultipleLines() {
+               FORMATTER formatter = new FORMATTER();
+               formatter.insertSpaceAfterKeywordsInControlFlowStatements = 
true;
+               formatter.placeOpenBraceOnNewLine = false;
+               formatter.insertSpaces = false;
+               String result = formatter.formatActionScriptText(
+               // @formatter:off
+                       "if (condition1 &&\n" +
+                       "\tcondition2\n" + 
+                       ") {\n" +
+                       "}",
+                       // @formatter:on
+                       problems
+               );
+               assertEquals(
+               // @formatter:off
+                               "if (condition1 &&\n" +
+                               "\t\tcondition2\n" +
+                               "\t) {\n" +
+                               "}",
+                               // @formatter:on
+                               result);
+       }
 }

Reply via email to