Commit 897b8212 authored by Jeremy Hylton's avatar Jeremy Hylton

Make it illegal to assign to __debug__ as per Guido's request.

parent e280c06d
...@@ -66,6 +66,9 @@ int Py_OptimizeFlag = 0; ...@@ -66,6 +66,9 @@ int Py_OptimizeFlag = 0;
#define LATE_FUTURE \ #define LATE_FUTURE \
"from __future__ imports must occur at the beginning of the file" "from __future__ imports must occur at the beginning of the file"
#define ASSIGN_DEBUG \
"can not assign to __debug__"
#define MANGLE_LEN 256 #define MANGLE_LEN 256
#define OFF(x) offsetof(PyCodeObject, x) #define OFF(x) offsetof(PyCodeObject, x)
...@@ -5181,8 +5184,16 @@ symtable_assign(struct symtable *st, node *n, int flag) ...@@ -5181,8 +5184,16 @@ symtable_assign(struct symtable *st, node *n, int flag)
if (TYPE(tmp) == LPAR || TYPE(tmp) == LSQB) { if (TYPE(tmp) == LPAR || TYPE(tmp) == LSQB) {
n = CHILD(n, 1); n = CHILD(n, 1);
goto loop; goto loop;
} else if (TYPE(tmp) == NAME) } else if (TYPE(tmp) == NAME) {
if (strcmp(STR(tmp), "__debug__") == 0) {
PyErr_SetString(PyExc_SyntaxError,
ASSIGN_DEBUG);
PyErr_SyntaxLocation(st->st_filename,
n->n_lineno);
st->st_errors++;
}
symtable_add_def(st, STR(tmp), DEF_LOCAL | flag); symtable_add_def(st, STR(tmp), DEF_LOCAL | flag);
}
return; return;
case dotted_as_name: case dotted_as_name:
if (NCH(n) == 3) if (NCH(n) == 3)
......
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