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);
+       }
 }

Reply via email to