From: Neal Norwitz Date: Fri, 19 May 2006 06:43:50 +0000 (+0000) Subject: Fix #1474677, non-keyword argument following keyword. X-Git-Tag: v2.5b1~614 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5ef922447c3dd0f9b306b4fde59481b4d4eaeaa3;p=python Fix #1474677, non-keyword argument following keyword. --- diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index 9d3ff02c55..dc7a16d1e2 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -309,6 +309,9 @@ class SyntaxTestCase(unittest.TestCase): "unindent does not match .* level", subclass=IndentationError) + def test_kwargs_last(self): + self._check_error("int(base=10, '2')", "non-keyword arg") + def test_main(): test_support.run_unittest(SyntaxTestCase) from test import test_syntax diff --git a/Python/ast.c b/Python/ast.c index fafa25310b..9664590055 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -1750,6 +1750,11 @@ ast_for_call(struct compiling *c, const node *n, expr_ty func) if (TYPE(ch) == argument) { expr_ty e; if (NCH(ch) == 1) { + if (nkeywords) { + ast_error(CHILD(ch, 0), + "non-keyword arg after keyword arg"); + return NULL; + } e = ast_for_expr(c, CHILD(ch, 0)); if (!e) return NULL;