diff --git a/pkl-core/src/test/files/LanguageSnippetTests/input/errors/letExpressionError3.pkl b/pkl-core/src/test/files/LanguageSnippetTests/input/errors/letExpressionError3.pkl new file mode 100644 index 00000000..1930e404 --- /dev/null +++ b/pkl-core/src/test/files/LanguageSnippetTests/input/errors/letExpressionError3.pkl @@ -0,0 +1,3 @@ +foo { + bar = let (qux = 1) +} diff --git a/pkl-core/src/test/files/LanguageSnippetTests/output/errors/letExpressionError3.err b/pkl-core/src/test/files/LanguageSnippetTests/output/errors/letExpressionError3.err new file mode 100644 index 00000000..6f8c8b35 --- /dev/null +++ b/pkl-core/src/test/files/LanguageSnippetTests/output/errors/letExpressionError3.err @@ -0,0 +1,6 @@ +–– Pkl Error –– +Unexpected token `}`. + +x | } + ^ +at letExpressionError3 (file:///$snippetsDir/input/errors/letExpressionError3.pkl) diff --git a/pkl-parser/src/main/java/org/pkl/parser/GenericParserImpl.java b/pkl-parser/src/main/java/org/pkl/parser/GenericParserImpl.java index f00e0d46..0dd9b9a6 100644 --- a/pkl-parser/src/main/java/org/pkl/parser/GenericParserImpl.java +++ b/pkl-parser/src/main/java/org/pkl/parser/GenericParserImpl.java @@ -888,7 +888,7 @@ class GenericParserImpl { expect(Token.RPAREN, paramDef, "unexpectedToken", ")"); children.add(new Node(NodeType.LET_PARAMETER_DEFINITION, paramDef)); ff(children); - children.add(parseExpr(expectation)); + children.add(parseExpr()); yield new Node(NodeType.LET_EXPR, children); } case TRUE, FALSE -> new Node(NodeType.BOOL_LITERAL_EXPR, next().span); diff --git a/pkl-parser/src/main/java/org/pkl/parser/ParserImpl.java b/pkl-parser/src/main/java/org/pkl/parser/ParserImpl.java index 28feb5e7..390396ab 100644 --- a/pkl-parser/src/main/java/org/pkl/parser/ParserImpl.java +++ b/pkl-parser/src/main/java/org/pkl/parser/ParserImpl.java @@ -1009,7 +1009,7 @@ final class ParserImpl { expect(Token.ASSIGN, "unexpectedToken", "="); var bindExpr = parseExpr(")"); expect(Token.RPAREN, "unexpectedToken", ")"); - var exp = parseExpr(expectation); + var exp = parseExpr(); yield new LetExpr(param, bindExpr, exp, start.endWith(exp.span())); } case TRUE -> new BoolLiteralExpr(true, next().span); diff --git a/pkl-parser/src/test/kotlin/org/pkl/parser/ParserComparisonTest.kt b/pkl-parser/src/test/kotlin/org/pkl/parser/ParserComparisonTest.kt index a49e90ab..524b0b72 100644 --- a/pkl-parser/src/test/kotlin/org/pkl/parser/ParserComparisonTest.kt +++ b/pkl-parser/src/test/kotlin/org/pkl/parser/ParserComparisonTest.kt @@ -99,6 +99,7 @@ class ParserComparisonTest { "errors/invalidCharacterEscape.pkl", "errors/invalidCharacterEscape2.pkl", "errors/invalidUnicodeEscape.pkl", + "errors/letExpressionError3.pkl", "errors/unterminatedUnicodeEscape.pkl", "errors/keywordNotAllowedHere1.pkl", "errors/keywordNotAllowedHere2.pkl",