Mercurial > cpython-lru_cache-weakref
diff Python/compile.c @ 16783:4feea99be777 legacy-trunk
Add warnings about undefined "global"
SF bug #233532
XXX Can't figure out how to write test cases that work with warnings
| author | Jeremy Hylton <jeremy@alum.mit.edu> |
|---|---|
| date | Tue, 27 Feb 2001 05:15:57 +0000 |
| parents | 5a1230de436a |
| children | 08d937107fe6 |
line wrap: on
line diff
--- a/Python/compile.c Tue Feb 27 04:45:05 2001 +0000 +++ b/Python/compile.c Tue Feb 27 05:15:57 2001 +0000 @@ -4853,6 +4853,35 @@ for (i = 1; i < NCH(n); i += 2) { char *name = STR(CHILD(n, i)); + int flags; + + flags = symtable_lookup(st, name); + if (flags && flags != DEF_GLOBAL) { + char buf[500]; + if (flags & DEF_PARAM) { + PyErr_Format(PyExc_SyntaxError, + "name '%.400s' is local and global", + PyString_AS_STRING(name)); + set_error_location(st->st_filename, + st->st_cur->ste_lineno); + st->st_errors++; + return; + } else if (flags & DEF_LOCAL) { + sprintf(buf, GLOBAL_AFTER_ASSIGN, name); + if (PyErr_Warn(PyExc_SyntaxWarning, + buf) < 0) { + /* XXX set line number? */ + st->st_errors++; + } + } else { + sprintf(buf, GLOBAL_AFTER_USE, name); + if (PyErr_Warn(PyExc_SyntaxWarning, + buf) < 0) { + /* XXX set line number? */ + st->st_errors++; + } + } + } symtable_add_def(st, name, DEF_GLOBAL); } }
