From c480cc81188acaae6f33575cc712fd3759ce3dba Mon Sep 17 00:00:00 2001 From: Islon Scherer Date: Fri, 12 Dec 2025 18:02:48 +0100 Subject: [PATCH] Fix bug in parsing of super expression (#1364) --- .../LanguageSnippetTests/input/parser/spread.pkl | 15 +++++++++++++++ .../LanguageSnippetTests/output/parser/spread.pcf | 8 ++++++++ .../src/main/java/org/pkl/parser/Parser.java | 4 +++- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 pkl-core/src/test/files/LanguageSnippetTests/input/parser/spread.pkl create mode 100644 pkl-core/src/test/files/LanguageSnippetTests/output/parser/spread.pcf diff --git a/pkl-core/src/test/files/LanguageSnippetTests/input/parser/spread.pkl b/pkl-core/src/test/files/LanguageSnippetTests/input/parser/spread.pkl new file mode 100644 index 00000000..5bdfa082 --- /dev/null +++ b/pkl-core/src/test/files/LanguageSnippetTests/input/parser/spread.pkl @@ -0,0 +1,15 @@ + +local baz = new Dynamic {} + +local foo = new Dynamic { + bar = 1 +} + +qux { + (foo) { + ...super.bar + (baz) { + qux = 1 + } + } +} diff --git a/pkl-core/src/test/files/LanguageSnippetTests/output/parser/spread.pcf b/pkl-core/src/test/files/LanguageSnippetTests/output/parser/spread.pcf new file mode 100644 index 00000000..4b98860e --- /dev/null +++ b/pkl-core/src/test/files/LanguageSnippetTests/output/parser/spread.pcf @@ -0,0 +1,8 @@ +qux { + new { + bar = 1 + new { + qux = 1 + } + } +} diff --git a/pkl-parser/src/main/java/org/pkl/parser/Parser.java b/pkl-parser/src/main/java/org/pkl/parser/Parser.java index 5d6e8566..688c9082 100644 --- a/pkl-parser/src/main/java/org/pkl/parser/Parser.java +++ b/pkl-parser/src/main/java/org/pkl/parser/Parser.java @@ -973,7 +973,9 @@ public class Parser { if (lookahead == Token.DOT) { next(); var identifier = parseIdentifier(); - if (lookahead == Token.LPAREN) { + if (lookahead == Token.LPAREN + && !precededBySemicolon + && _lookahead.newLinesBetween == 0) { var args = parseArgumentList(); yield new SuperAccessExpr(identifier, args, start.endWith(args.span())); } else {