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 92c3ecaee893d9b3cce24ffaaad12f64f4c88a43 Author: Josh Tynjala <[email protected]> AuthorDate: Wed Oct 6 14:12:31 2021 -0700 formatter: don't insert space before ... if it's the first parameter --- .../org/apache/royale/formatter/FORMATTER.java | 5 ++- .../royale/formatter/TestFunctionDeclaration.java | 50 ++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) 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 ab2983e..51cddb5 100644 --- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java +++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java @@ -737,7 +737,10 @@ class FORMATTER { break; } case ASTokenTypes.TOKEN_ELLIPSIS: { - requiredSpace = true; + boolean isFirstArg = prevToken == null || prevToken.getType() == ASTokenTypes.TOKEN_PAREN_OPEN; + if (!isFirstArg) { + requiredSpace = true; + } break; } case ASTokenTypes.TOKEN_KEYWORD_DEFAULT: 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 af3eec3..50729e2 100644 --- a/formatter/src/test/java/org/apache/royale/formatter/TestFunctionDeclaration.java +++ b/formatter/src/test/java/org/apache/royale/formatter/TestFunctionDeclaration.java @@ -220,4 +220,54 @@ public class TestFunctionDeclaration extends BaseFormatterTests { // @formatter:on result); } + + @Test + public void testParametersWithRest() { + FORMATTER formatter = new FORMATTER(); + formatter.insertSpaceAfterKeywordsInControlFlowStatements = true; + formatter.placeOpenBraceOnNewLine = true; + formatter.insertSpaces = false; + String result = formatter.formatText( + // @formatter:off + "function myFunction(p1:String, ...rest)\n" + + "{\n" + + "\tstatement;\n" + + "}", + // @formatter:on + problems + ); + assertEquals( + // @formatter:off + "function myFunction(p1:String, ...rest)\n" + + "{\n" + + "\tstatement;\n" + + "}", + // @formatter:on + result); + } + + @Test + public void testParametersRestOnly() { + FORMATTER formatter = new FORMATTER(); + formatter.insertSpaceAfterKeywordsInControlFlowStatements = true; + formatter.placeOpenBraceOnNewLine = true; + formatter.insertSpaces = false; + String result = formatter.formatText( + // @formatter:off + "function myFunction(...rest)\n" + + "{\n" + + "\tstatement;\n" + + "}", + // @formatter:on + problems + ); + assertEquals( + // @formatter:off + "function myFunction(...rest)\n" + + "{\n" + + "\tstatement;\n" + + "}", + // @formatter:on + result); + } }
