Skip to content

Commit

Permalink
bpo-36052: Raise a SyntaxError when assigning a value to __debug__ wi…
Browse files Browse the repository at this point in the history
…th := (pythonGH-11958)

Trying to assign a value to __debug__ using the assignment operator is supposed to fail, but
a missing check for forbidden names when setting the context in the ast was preventing this behaviour.
  • Loading branch information
matrixise authored and pablogsal committed Feb 21, 2019
1 parent ea6207d commit 3ad9167
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 1 deletion.
4 changes: 4 additions & 0 deletions Lib/test/test_syntax.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@
Traceback (most recent call last):
SyntaxError: cannot assign to __debug__
>>> (__debug__ := 1)
Traceback (most recent call last):
SyntaxError: cannot assign to __debug__
>>> f() = 1
Traceback (most recent call last):
SyntaxError: cannot assign to function call
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Raise a :exc:`SyntaxError` when assigning a value to `__debug__` with the
Assignment Operator. Contributed by Stéphane Wirtel and Pablo Galindo.
2 changes: 1 addition & 1 deletion Python/ast.c
Original file line number Diff line number Diff line change
Expand Up @@ -1084,7 +1084,7 @@ set_context(struct compiling *c, expr_ty e, expr_context_ty ctx, const node *n)
return 0;
break;
case Name_kind:
if (ctx == Store) {
if (ctx == Store || ctx == NamedStore) {
if (forbidden_name(c, e->v.Name.id, n, 0))
return 0; /* forbidden_name() calls ast_error() */
}
Expand Down

0 comments on commit 3ad9167

Please sign in to comment.