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/09/09 22:12:56 UTC
[royale-compiler] 02/03: formatter: better formatting for object
literal inside a ternary statement
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 <jo...@apache.org>
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);
+ }
}