Skip to content

Commit 76bf91e

Browse files
SONARPY-933 Fix parse error: lambda parameter list can have a trailing comma (#1000)
1 parent acdea44 commit 76bf91e

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

python-frontend/src/main/java/org/sonar/python/api/PythonGrammar.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,15 +314,15 @@ public static void grammar(LexerfulGrammarBuilder b) {
314314
b.rule(NAME).is(IDENTIFIER);
315315

316316
b.rule(VARARGSLIST).is(b.firstOf(
317-
b.sequence("**", NAME, b.optional(",")),
318-
b.sequence("*", b.optional(NAME), b.zeroOrMore(",", FPDEF, b.optional("=", TEST)), b.optional(",", "**", NAME), b.optional(",")),
317+
b.sequence("**", NAME),
318+
b.sequence("*", b.optional(NAME), b.zeroOrMore(",", FPDEF, b.optional("=", TEST)), b.optional(",", "**", NAME)),
319319
b.sequence(FPDEF, b.optional("=", TEST),
320320
b.zeroOrMore(",", FPDEF, b.optional("=", TEST)),
321321
b.optional(",", "/", b.zeroOrMore(",", FPDEF, b.optional("=", TEST))),
322322
b.optional(",", b.firstOf(
323323
b.sequence("**", NAME),
324324
b.sequence("*", b.optional(NAME), b.zeroOrMore(",", FPDEF, b.optional("=", TEST)), b.optional(",", "**", NAME))))
325-
), b.optional(",")));
325+
)), b.optional(","));
326326
b.rule(FPDEF).is(b.firstOf(
327327
NAME,
328328
b.sequence("(", FPLIST, ")")));

python-frontend/src/test/java/org/sonar/python/tree/PythonTreeMakerTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1908,6 +1908,7 @@ public void lambda_expr() {
19081908
assertThat(lambda("lambda x, /, *args, **kwargs: x").parameters().all()).hasSize(4);
19091909
assertThat(lambda("lambda *, x: x").parameters().all()).hasSize(2);
19101910
assertThat(lambda("lambda **kwargs: kwargs").parameters().all()).hasSize(1);
1911+
assertThat(lambda("lambda x, y,: x + y").parameters().all()).hasSize(2);
19111912
}
19121913

19131914
private LambdaExpression lambda(String code) {

0 commit comments

Comments
 (0)