Kaydet (Commit) 0bba7f83 authored tarafından Guido van Rossum's avatar Guido van Rossum

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.
üst 9da7f3b4
......@@ -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++;
}
}
......
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