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 {