Commit 778e2654 authored by Jeremy Hylton's avatar Jeremy Hylton

Fix SF buf #480096: Assign to __debug__ still allowed

Easy enough to catch assignment in the compiler.  The perverse user
can still change the value of __debug__, but that may be the least he
can do.
parent 734c7fb1
from test_support import verbose, TestFailed
if verbose:
print "Testing whether compiler catches assignment to __debug__"
try:
compile('__debug__ = 1', '?', 'single')
except SyntaxError:
pass
import __builtin__
setattr(__builtin__, '__debug__', 'sure')
if verbose:
print 'Running tests on argument handling'
......@@ -21,7 +32,8 @@ try:
except SyntaxError:
pass
print "testing complex args"
if verbose:
print "testing complex args"
def comp_args((a, b)):
print a,b
......
......@@ -5459,8 +5459,13 @@ symtable_assign(struct symtable *st, node *n, int def_flag)
n = CHILD(n, 1);
goto loop;
} else if (TYPE(tmp) == NAME) {
if (strcmp(STR(tmp), "__debug__") == 0)
symtable_warn(st, ASSIGN_DEBUG);
if (strcmp(STR(tmp), "__debug__") == 0) {
PyErr_SetString(PyExc_SyntaxError,
ASSIGN_DEBUG);
PyErr_SyntaxLocation(st->st_filename,
st->st_cur->ste_opt_lineno);
st->st_errors++;
}
symtable_add_def(st, STR(tmp), DEF_LOCAL | def_flag);
}
return;
......
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