summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2001-02-28 21:55:38 (GMT)
committerGuido van Rossum <guido@python.org>2001-02-28 21:55:38 (GMT)
commit0bba7f83f2e04652e074acd918c2966c42f77af1 (patch)
tree0d16b0b31a92052b3327e312a00113b799fdca5d
parent9da7f3b4f44eb4e2c9782f9f73da5e46dc1b9f96 (diff)
downloadcpython-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.c33
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++;
}
}