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 89893ab38c74e9e489bbbdf1796d23c7acd076fe
Author: Josh Tynjala <[email protected]>
AuthorDate: Thu Sep 9 14:46:28 2021 -0700

    formatter: better formatting for object literal inside a ternary statement
---
 .../org/apache/royale/formatter/FORMATTER.java     | 22 +++++++++++++---------
 .../royale/formatter/TestTernaryStatement.java     | 18 ++++++++++++++++++
 2 files changed, 31 insertions(+), 9 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 7959d31..73463fc 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -484,8 +484,13 @@ class FORMATTER {
                                                        blockOpenPending = 
prevTokenNotComment == null
                                                                        || 
prevTokenNotComment.getType() == ASTokenTypes.TOKEN_SEMICOLON
                                                                        || 
prevTokenNotComment.getType() == ASTokenTypes.TOKEN_BLOCK_OPEN
-                                                                       || 
prevTokenNotComment.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE
-                                                                       || 
prevTokenNotComment.getType() == ASTokenTypes.TOKEN_COLON;
+                                                                       || 
prevTokenNotComment.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE;
+                                                       if (!blockOpenPending 
&& prevTokenNotComment.getType() == ASTokenTypes.TOKEN_COLON
+                                                                       && 
!blockStack.isEmpty()) {
+                                                               IASToken 
blockToken = blockStack.get(blockStack.size() - 1).token;
+                                                               
blockOpenPending = blockToken.getType() == ASTokenTypes.TOKEN_KEYWORD_DEFAULT
+                                                                               
|| blockToken.getType() == ASTokenTypes.TOKEN_KEYWORD_CASE;
+                                                       }
                                                        if (blockOpenPending) {
                                                                
blockStack.add(new BlockStackItem(token));
                                                        }
@@ -719,9 +724,8 @@ class FORMATTER {
                                                                                
&& prevStackItem.blockDepth <= 0) {
                                                                        
blockStack.remove(blockStack.size() - 1);
                                                                        if 
(prevStackItem.token.getType() != ASTokenTypes.TOKEN_KEYWORD_CLASS
-                                                                               
&& prevStackItem.token.getType() != ASTokenTypes.TOKEN_KEYWORD_INTERFACE
-                                                                               
&& prevStackItem.token.getType() != ASTokenTypes.TOKEN_KEYWORD_FUNCTION)
-                                                                       {
+                                                                               
        && prevStackItem.token.getType() != ASTokenTypes.TOKEN_KEYWORD_INTERFACE
+                                                                               
        && prevStackItem.token.getType() != 
ASTokenTypes.TOKEN_KEYWORD_FUNCTION) {
                                                                                
indent = decreaseIndent(indent);
                                                                        }
                                                                }
@@ -763,11 +767,11 @@ class FORMATTER {
                                                        if (item.blockDepth <= 
0) {
                                                                
blockStack.remove(blockStack.size() - 1);
                                                        }
+                                                       if (!(item instanceof 
ObjectLiteralBlockStackItem)
+                                                                       && 
(nextToken == null || nextToken.getType() != ASTokenTypes.TOKEN_SEMICOLON)) {
+                                                               
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
+                                                       }
                                                }
-                                               if (nextToken == null || 
nextToken.getType() != ASTokenTypes.TOKEN_SEMICOLON) {
-                                                       numRequiredNewLines = 
Math.max(numRequiredNewLines, 1);
-                                               }
-
                                                break;
                                        }
                                        case 
ASTokenTypes.TOKEN_OPERATOR_INCREMENT:
diff --git 
a/formatter/src/test/java/org/apache/royale/formatter/TestTernaryStatement.java 
b/formatter/src/test/java/org/apache/royale/formatter/TestTernaryStatement.java
index cd6ef98..3432198 100644
--- 
a/formatter/src/test/java/org/apache/royale/formatter/TestTernaryStatement.java
+++ 
b/formatter/src/test/java/org/apache/royale/formatter/TestTernaryStatement.java
@@ -61,4 +61,22 @@ public class TestTernaryStatement extends BaseFormatterTests 
{
                                // @formatter:on
                                result);
        }
+       @Test
+       public void testObjectLiterals() {
+               FORMATTER formatter = new FORMATTER();
+               formatter.insertSpaceAfterKeywordsInControlFlowStatements = 
true;
+               formatter.placeOpenBraceOnNewLine = true;
+               formatter.insertSpaces = false;
+               String result = formatter.formatText(
+               // @formatter:off
+                       "condition ? {} : {};",
+                       // @formatter:on
+                       problems
+               );
+               assertEquals(
+               // @formatter:off
+                       "condition ? {} : {};",
+                               // @formatter:on
+                               result);
+       }
 }

Reply via email to