Mercurial > cpython-lru_cache-weakref
diff Python/ast.c @ 39300:b745b3fd66a6 legacy-trunk
Patch #1531113: Fix augmented assignment with yield expressions.
Also fix a SystemError when trying to assign to yield expressions.
| author | Neal Norwitz <nnorwitz@gmail.com> |
|---|---|
| date | Sun, 30 Jul 2006 06:53:31 +0000 |
| parents | 7c09b66f04bd |
| children | d0e6170704de |
line wrap: on
line diff
--- a/Python/ast.c Sun Jul 30 05:55:39 2006 +0000 +++ b/Python/ast.c Sun Jul 30 06:53:31 2006 +0000 @@ -387,6 +387,9 @@ case GeneratorExp_kind: expr_name = "generator expression"; break; + case Yield_kind: + expr_name = "yield expression"; + break; case ListComp_kind: expr_name = "list comprehension"; break; @@ -1928,12 +1931,7 @@ operator_ty newoperator; node *ch = CHILD(n, 0); - if (TYPE(ch) == testlist) - expr1 = ast_for_testlist(c, ch); - else - expr1 = Yield(ast_for_expr(c, CHILD(ch, 0)), LINENO(ch), n->n_col_offset, - c->c_arena); - + expr1 = ast_for_testlist(c, ch); if (!expr1) return NULL; /* TODO(nas): Remove duplicated error checks (set_context does it) */ @@ -1942,6 +1940,10 @@ ast_error(ch, "augmented assignment to generator " "expression not possible"); return NULL; + case Yield_kind: + ast_error(ch, "augmented assignment to yield " + "expression not possible"); + return NULL; case Name_kind: { const char *var_name = PyString_AS_STRING(expr1->v.Name.id); if (var_name[0] == 'N' && !strcmp(var_name, "None")) { @@ -1964,7 +1966,7 @@ if (TYPE(ch) == testlist) expr2 = ast_for_testlist(c, ch); else - expr2 = Yield(ast_for_expr(c, ch), LINENO(ch), ch->n_col_offset, c->c_arena); + expr2 = ast_for_expr(c, ch); if (!expr2) return NULL;
