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 a757556d890d61f6e80f740dcb834104726fd41e Author: Josh Tynjala <[email protected]> AuthorDate: Wed Sep 27 13:14:42 2023 -0700 ASTokenFormatter: handle comments before else when not inserting new line --- .../apache/royale/formatter/ASTokenFormatter.java | 2 +- .../apache/royale/formatter/TestElseStatement.java | 61 ++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java b/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java index 6e5559aba..8fd808a28 100644 --- a/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java +++ b/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java @@ -633,7 +633,7 @@ public class ASTokenFormatter extends BaseTokenFormatter { blockStack.remove(blockStack.size() - 1); } if (!(stackItem instanceof ObjectLiteralBlockStackItem)) { - if (nextTokenNotComment != null && nextTokenNotComment.getType() == ASTokenTypes.TOKEN_KEYWORD_ELSE && !settings.insertNewLineElse) { + if (nextToken != null && nextTokenNotComment != null && nextToken.getType() != ASTokenTypes.HIDDEN_TOKEN_SINGLE_LINE_COMMENT && nextTokenNotComment.getType() == ASTokenTypes.TOKEN_KEYWORD_ELSE && !settings.insertNewLineElse) { elseNoNewLinePending = true; } else if (nextToken == null || (nextToken.getType() != ASTokenTypes.TOKEN_SEMICOLON 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 038e1eb3a..3b04d2ff6 100644 --- a/formatter/src/test/java/org/apache/royale/formatter/TestElseStatement.java +++ b/formatter/src/test/java/org/apache/royale/formatter/TestElseStatement.java @@ -941,4 +941,65 @@ public class TestElseStatement extends BaseFormatterTests { // @formatter:on result); } + + @Test + public void testDisableInsertNewLineElseWithSingleLineCommentBefore() { + FormatterSettings settings = new FormatterSettings(); + settings.insertSpaceAfterKeywordsInControlFlowStatements = true; + settings.placeOpenBraceOnNewLine = false; + settings.insertSpaces = false; + settings.insertNewLineElse = false; + ASTokenFormatter formatter = new ASTokenFormatter(settings); + String result = formatter.format("file.as", + // @formatter:off + "if (condition) {\n" + + "\tstatement;\n" + + "} // comment\n" + + "else {\n" + + "\tstatement;\n" + + "}", + // @formatter:on + problems + ); + assertEquals( + // @formatter:off + "if (condition) {\n" + + "\tstatement;\n" + + "} // comment\n" + + "else {\n" + + "\tstatement;\n" + + "}", + // @formatter:on + result); + } + + @Test + public void testDisableInsertNewLineElseWithMultiLineCommentBefore() { + FormatterSettings settings = new FormatterSettings(); + settings.insertSpaceAfterKeywordsInControlFlowStatements = true; + settings.placeOpenBraceOnNewLine = false; + settings.insertSpaces = false; + settings.insertNewLineElse = false; + ASTokenFormatter formatter = new ASTokenFormatter(settings); + String result = formatter.format("file.as", + // @formatter:off + "if (condition) {\n" + + "\tstatement;\n" + + "} /* comment */\n" + + "else {\n" + + "\tstatement;\n" + + "}", + // @formatter:on + problems + ); + assertEquals( + // @formatter:off + "if (condition) {\n" + + "\tstatement;\n" + + "} /* comment */ else {\n" + + "\tstatement;\n" + + "}", + // @formatter:on + result); + } }
