diff options
author | Benjamin Peterson <benjamin@python.org> | 2015-05-16 13:44:45 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2015-05-16 13:44:45 (GMT) |
commit | de12b79cd65ddde79fdaf794b58cd184f345a884 (patch) | |
tree | 02b0890752f2a2ec66ce8d6049ad0c4eaba1d8df | |
parent | 8de32d906f3cdcffa088fc786eefa8f4e7bce785 (diff) | |
download | cpython-de12b79cd65ddde79fdaf794b58cd184f345a884.zip cpython-de12b79cd65ddde79fdaf794b58cd184f345a884.tar.gz cpython-de12b79cd65ddde79fdaf794b58cd184f345a884.tar.bz2 |
allow test node after ** in calls (closes #24176)
-rw-r--r-- | Grammar/Grammar | 2 | ||||
-rw-r--r-- | Lib/test/test_grammar.py | 1 | ||||
-rw-r--r-- | Modules/parsermodule.c | 2 | ||||
-rw-r--r-- | Python/graminit.c | 12 |
4 files changed, 7 insertions, 10 deletions
diff --git a/Grammar/Grammar b/Grammar/Grammar index 4b193b9..d129f62 100644 --- a/Grammar/Grammar +++ b/Grammar/Grammar @@ -136,7 +136,7 @@ arglist: argument (',' argument)* [','] # that precede iterable unpackings are blocked; etc. argument: ( test [comp_for] | test '=' test | - '**' expr | + '**' test | star_expr ) comp_iter: comp_for | comp_if diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py index e46a232..2af7390 100644 --- a/Lib/test/test_grammar.py +++ b/Lib/test/test_grammar.py @@ -206,6 +206,7 @@ class GrammarTests(unittest.TestCase): d01(1) d01(*(1,)) d01(**{'a':2}) + d01(**{'a':2} or {}) def d11(a, b=1): pass d11(1) d11(1, 2) diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c index 876e57d..2a16dba 100644 --- a/Modules/parsermodule.c +++ b/Modules/parsermodule.c @@ -2871,7 +2871,7 @@ validate_argument(node *tree) if (res) { if (TYPE(CHILD(tree, 0)) == DOUBLESTAR) { - res = validate_expr(CHILD(tree, 1)); + res = validate_test(CHILD(tree, 1)); } else if (nch == 1) { res = validate_test_or_star_expr(CHILD(tree, 0)); diff --git a/Python/graminit.c b/Python/graminit.c index 8b236a4..14ac24f 100644 --- a/Python/graminit.c +++ b/Python/graminit.c @@ -1748,24 +1748,20 @@ static arc arcs_78_0[3] = { }; static arc arcs_78_1[3] = { {164, 3}, - {31, 4}, + {31, 2}, {0, 1}, }; static arc arcs_78_2[1] = { - {107, 3}, + {26, 3}, }; static arc arcs_78_3[1] = { {0, 3}, }; -static arc arcs_78_4[1] = { - {26, 3}, -}; -static state states_78[5] = { +static state states_78[4] = { {3, arcs_78_0}, {3, arcs_78_1}, {1, arcs_78_2}, {1, arcs_78_3}, - {1, arcs_78_4}, }; static arc arcs_79_0[2] = { {164, 1}, @@ -2021,7 +2017,7 @@ static dfa dfas[85] = { "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, {333, "arglist", 0, 3, states_77, "\000\040\200\000\006\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, - {334, "argument", 0, 5, states_78, + {334, "argument", 0, 4, states_78, "\000\040\200\000\006\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, {335, "comp_iter", 0, 2, states_79, "\000\000\000\000\000\000\000\000\000\000\000\000\021\000\000\000\000\000\000\000\000\000"}, |