diff options
author | Guido van Rossum <guido@python.org> | 2001-02-28 21:55:38 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2001-02-28 21:55:38 (GMT) |
commit | 0bba7f83f2e04652e074acd918c2966c42f77af1 (patch) | |
tree | 0d16b0b31a92052b3327e312a00113b799fdca5d | |
parent | 9da7f3b4f44eb4e2c9782f9f73da5e46dc1b9f96 (diff) | |
download | cpython-0bba7f83f2e04652e074acd918c2966c42f77af1.zip cpython-0bba7f83f2e04652e074acd918c2966c42f77af1.tar.gz cpython-0bba7f83f2e04652e074acd918c2966c42f77af1.tar.bz2 |
Use the new PyErr_WarnExplicit() API to issue better warnings for
global after assign / use.
Note: I'm not updating the PyErr_Warn() call for import * / exec
combined with a function, because I can't trigger it with an example.
Jeremy, just follow the example of the call to PyErr_WarnExplicit()
that I *did* include.
-rw-r--r-- | Python/compile.c | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/Python/compile.c b/Python/compile.c index b445122..6b5fa11 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -4830,18 +4830,27 @@ symtable_global(struct symtable *st, node *n) 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? */ + } + else { + if (flags & DEF_LOCAL) + sprintf(buf, GLOBAL_AFTER_ASSIGN, + name); + else + sprintf(buf, GLOBAL_AFTER_USE, name); + if (PyErr_WarnExplicit(PyExc_SyntaxWarning, + buf, st->st_filename, + st->st_cur->ste_lineno, + NULL, NULL) < 0) + { + if (PyErr_ExceptionMatches( + PyExc_SyntaxWarning)) + { + PyErr_SetString( + PyExc_SyntaxError, buf); + PyErr_SyntaxLocation( + st->st_filename, + st->st_cur->ste_lineno); + } st->st_errors++; } } |