Add warnings about undefined "global"

SF bug #233532

XXX Can't figure out how to write test cases that work with warnings
This commit is contained in:
Jeremy Hylton 2001-02-27 05:15:57 +00:00
parent a35c688055
commit be77cf7d57
1 changed files with 29 additions and 0 deletions

View File

@ -4853,6 +4853,35 @@ symtable_global(struct symtable *st, node *n)
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);
}
}