From f6d3fb1228d8b80d8326c3fe7a05d1fac9d22cef Mon Sep 17 00:00:00 2001 From: Islon Scherer Date: Tue, 21 Oct 2025 09:45:27 +0200 Subject: [PATCH] Fix let formatting (#1246) --- .../src/main/kotlin/org/pkl/formatter/Builder.kt | 2 +- .../files/FormatterSnippetTests/input/expr-let.pkl | 6 ++++++ .../test/files/FormatterSnippetTests/input/when.pkl | 9 +++++++++ .../files/FormatterSnippetTests/output/expr-let.pkl | 13 +++++++++++-- .../files/FormatterSnippetTests/output/when.pkl | 11 +++++++++++ .../src/main/java/org/pkl/parser/GenericParser.java | 2 +- 6 files changed, 39 insertions(+), 4 deletions(-) diff --git a/pkl-formatter/src/main/kotlin/org/pkl/formatter/Builder.kt b/pkl-formatter/src/main/kotlin/org/pkl/formatter/Builder.kt index 02e6f0dd..9b627412 100644 --- a/pkl-formatter/src/main/kotlin/org/pkl/formatter/Builder.kt +++ b/pkl-formatter/src/main/kotlin/org/pkl/formatter/Builder.kt @@ -791,7 +791,7 @@ internal class Builder(sourceText: String) { private fun formatLetParameterDefinition(node: Node): FormatNode { val nodes = formatGeneric(node.children) { prev, next -> - if (prev.isTerminal("(")) null else if (next.isTerminal(")")) Line else SpaceOrLine + if (prev.isTerminal("(") || next.isTerminal(")")) Line else SpaceOrLine } return Group(newId(), nodes) } diff --git a/pkl-formatter/src/test/files/FormatterSnippetTests/input/expr-let.pkl b/pkl-formatter/src/test/files/FormatterSnippetTests/input/expr-let.pkl index 1cd0af5c..474c869c 100644 --- a/pkl-formatter/src/test/files/FormatterSnippetTests/input/expr-let.pkl +++ b/pkl-formatter/src/test/files/FormatterSnippetTests/input/expr-let.pkl @@ -9,3 +9,9 @@ baz = let (someVariable = 10000000) let (someOtherVariable = 2000000) let (someAnotherVariable = 3000000) someVariable + someOtherVariable + someAnotherVariable + +qux = let ( // some comment + // another comment + bar = 5 + ) + bar diff --git a/pkl-formatter/src/test/files/FormatterSnippetTests/input/when.pkl b/pkl-formatter/src/test/files/FormatterSnippetTests/input/when.pkl index 910fc445..f0a37ce4 100644 --- a/pkl-formatter/src/test/files/FormatterSnippetTests/input/when.pkl +++ b/pkl-formatter/src/test/files/FormatterSnippetTests/input/when.pkl @@ -7,3 +7,12 @@ foo { bar = 2 } } + +bar { + when (new Listing { + 1 + 2 + }.contains(1)) { + "1" + } +} diff --git a/pkl-formatter/src/test/files/FormatterSnippetTests/output/expr-let.pkl b/pkl-formatter/src/test/files/FormatterSnippetTests/output/expr-let.pkl index 838154a4..496477a9 100644 --- a/pkl-formatter/src/test/files/FormatterSnippetTests/output/expr-let.pkl +++ b/pkl-formatter/src/test/files/FormatterSnippetTests/output/expr-let.pkl @@ -1,11 +1,13 @@ foo = - let (vaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaariable = + let ( + vaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaariable = 10 ) 1 * 1 bar = - let (someVariable = new Listing { + let ( + someVariable = new Listing { 1 } ) @@ -16,3 +18,10 @@ baz = let (someOtherVariable = 2000000) let (someAnotherVariable = 3000000) someVariable + someOtherVariable + someAnotherVariable + +qux = + let ( // some comment + // another comment + bar = 5 + ) + bar diff --git a/pkl-formatter/src/test/files/FormatterSnippetTests/output/when.pkl b/pkl-formatter/src/test/files/FormatterSnippetTests/output/when.pkl index 2f0f6fd3..ce8b5ab9 100644 --- a/pkl-formatter/src/test/files/FormatterSnippetTests/output/when.pkl +++ b/pkl-formatter/src/test/files/FormatterSnippetTests/output/when.pkl @@ -5,3 +5,14 @@ foo { bar = 2 } } + +bar { + when ( + new Listing { + 1 + 2 + }.contains(1) + ) { + "1" + } +} diff --git a/pkl-parser/src/main/java/org/pkl/parser/GenericParser.java b/pkl-parser/src/main/java/org/pkl/parser/GenericParser.java index 161024c4..2dec2210 100644 --- a/pkl-parser/src/main/java/org/pkl/parser/GenericParser.java +++ b/pkl-parser/src/main/java/org/pkl/parser/GenericParser.java @@ -864,8 +864,8 @@ public class GenericParser { ff(children); var paramDef = new ArrayList(); expect(Token.LPAREN, paramDef, "unexpectedToken", "("); - ff(paramDef); var param = new ArrayList(); + ff(param); param.add(parseParameter()); ff(param); expect(Token.ASSIGN, param, "unexpectedToken", "=");