summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2015-05-16 13:44:45 (GMT)
committerBenjamin Peterson <benjamin@python.org>2015-05-16 13:44:45 (GMT)
commitde12b79cd65ddde79fdaf794b58cd184f345a884 (patch)
tree02b0890752f2a2ec66ce8d6049ad0c4eaba1d8df
parent8de32d906f3cdcffa088fc786eefa8f4e7bce785 (diff)
downloadcpython-de12b79cd65ddde79fdaf794b58cd184f345a884.zip
cpython-de12b79cd65ddde79fdaf794b58cd184f345a884.tar.gz
cpython-de12b79cd65ddde79fdaf794b58cd184f345a884.tar.bz2
allow test node after ** in calls (closes #24176)
-rw-r--r--Grammar/Grammar2
-rw-r--r--Lib/test/test_grammar.py1
-rw-r--r--Modules/parsermodule.c2
-rw-r--r--Python/graminit.c12
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"},