Browse Source
bpo-39890: Don't mutate the AST when compiling starred assignments (GH-18833)
pull/18837/head
Brandt Bucher
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
4 additions and
2 deletions
-
Python/compile.c
|
|
|
@ -3765,7 +3765,6 @@ assignment_helper(struct compiler *c, asdl_seq *elts) |
|
|
|
"star-unpacking assignment"); |
|
|
|
ADDOP_I(c, UNPACK_EX, (i + ((n-i-1) << 8))); |
|
|
|
seen_star = 1; |
|
|
|
asdl_seq_SET(elts, i, elt->v.Starred.value); |
|
|
|
} |
|
|
|
else if (elt->kind == Starred_kind) { |
|
|
|
return compiler_error(c, |
|
|
|
@ -3775,7 +3774,10 @@ assignment_helper(struct compiler *c, asdl_seq *elts) |
|
|
|
if (!seen_star) { |
|
|
|
ADDOP_I(c, UNPACK_SEQUENCE, n); |
|
|
|
} |
|
|
|
VISIT_SEQ(c, expr, elts); |
|
|
|
for (i = 0; i < n; i++) { |
|
|
|
expr_ty elt = asdl_seq_GET(elts, i); |
|
|
|
VISIT(c, expr, elt->kind != Starred_kind ? elt : elt->v.Starred.value); |
|
|
|
} |
|
|
|
return 1; |
|
|
|
} |
|
|
|
|
|
|
|
|