Kaydet (Commit) 4af861cb authored tarafından Sean Reifscheider's avatar Sean Reifscheider

Back-port of rev 61240 for issue #2238, fixing: Some syntax errors in *args

and **kwargs expressions could give bogus error messages.
üst eff5a4e9
...@@ -260,6 +260,10 @@ d31v(1) ...@@ -260,6 +260,10 @@ d31v(1)
def d32v((x,)): pass def d32v((x,)): pass
d32v((1,)) d32v((1,))
# Check ast errors in *args and *kwargs
check_syntax("f(*g(1=2))")
check_syntax("f(**g(1=2))")
### lambdef: 'lambda' [varargslist] ':' test ### lambdef: 'lambda' [varargslist] ':' test
print 'lambdef' print 'lambdef'
l1 = lambda : 0 l1 = lambda : 0
......
...@@ -14,6 +14,9 @@ Core and builtins ...@@ -14,6 +14,9 @@ Core and builtins
- Issue #2321: use pymalloc for unicode object string data to reduce - Issue #2321: use pymalloc for unicode object string data to reduce
memory usage in some circumstances. memory usage in some circumstances.
- Issue #2238: Some syntax errors in *args and **kwargs expressions could give
bogus error messages.
Library Library
------- -------
......
...@@ -1878,10 +1878,14 @@ ast_for_call(struct compiling *c, const node *n, expr_ty func) ...@@ -1878,10 +1878,14 @@ ast_for_call(struct compiling *c, const node *n, expr_ty func)
} }
else if (TYPE(ch) == STAR) { else if (TYPE(ch) == STAR) {
vararg = ast_for_expr(c, CHILD(n, i+1)); vararg = ast_for_expr(c, CHILD(n, i+1));
if (!vararg)
return NULL;
i++; i++;
} }
else if (TYPE(ch) == DOUBLESTAR) { else if (TYPE(ch) == DOUBLESTAR) {
kwarg = ast_for_expr(c, CHILD(n, i+1)); kwarg = ast_for_expr(c, CHILD(n, i+1));
if (!kwarg)
return NULL;
i++; i++;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment