allow test node after ** in calls (closes #24176)

This commit is contained in:
Benjamin Peterson 2015-05-16 09:44:45 -04:00
parent 8de32d906f
commit de12b79cd6
4 changed files with 7 additions and 10 deletions

View File

@ -136,7 +136,7 @@ arglist: argument (',' argument)* [',']
# that precede iterable unpackings are blocked; etc. # that precede iterable unpackings are blocked; etc.
argument: ( test [comp_for] | argument: ( test [comp_for] |
test '=' test | test '=' test |
'**' expr | '**' test |
star_expr ) star_expr )
comp_iter: comp_for | comp_if comp_iter: comp_for | comp_if

View File

@ -206,6 +206,7 @@ class GrammarTests(unittest.TestCase):
d01(1) d01(1)
d01(*(1,)) d01(*(1,))
d01(**{'a':2}) d01(**{'a':2})
d01(**{'a':2} or {})
def d11(a, b=1): pass def d11(a, b=1): pass
d11(1) d11(1)
d11(1, 2) d11(1, 2)

View File

@ -2871,7 +2871,7 @@ validate_argument(node *tree)
if (res) { if (res) {
if (TYPE(CHILD(tree, 0)) == DOUBLESTAR) { if (TYPE(CHILD(tree, 0)) == DOUBLESTAR) {
res = validate_expr(CHILD(tree, 1)); res = validate_test(CHILD(tree, 1));
} }
else if (nch == 1) { else if (nch == 1) {
res = validate_test_or_star_expr(CHILD(tree, 0)); res = validate_test_or_star_expr(CHILD(tree, 0));

View File

@ -1748,24 +1748,20 @@ static arc arcs_78_0[3] = {
}; };
static arc arcs_78_1[3] = { static arc arcs_78_1[3] = {
{164, 3}, {164, 3},
{31, 4}, {31, 2},
{0, 1}, {0, 1},
}; };
static arc arcs_78_2[1] = { static arc arcs_78_2[1] = {
{107, 3}, {26, 3},
}; };
static arc arcs_78_3[1] = { static arc arcs_78_3[1] = {
{0, 3}, {0, 3},
}; };
static arc arcs_78_4[1] = { static state states_78[4] = {
{26, 3},
};
static state states_78[5] = {
{3, arcs_78_0}, {3, arcs_78_0},
{3, arcs_78_1}, {3, arcs_78_1},
{1, arcs_78_2}, {1, arcs_78_2},
{1, arcs_78_3}, {1, arcs_78_3},
{1, arcs_78_4},
}; };
static arc arcs_79_0[2] = { static arc arcs_79_0[2] = {
{164, 1}, {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"}, "\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, {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"}, "\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"}, "\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, {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"}, "\000\000\000\000\000\000\000\000\000\000\000\000\021\000\000\000\000\000\000\000\000\000"},