Mercurial > cpython-lru_cache-weakref
diff Python/compile.c @ 16933:b046a31af2e0 legacy-trunk
Refactored the warning-issuing code more.
Made sure that the warnings issued by symtable_check_unoptimized()
(about import * and exec) contain the proper filename and line number,
and are transformed into SyntaxError exceptions with -Werror.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Fri, 02 Mar 2001 03:30:41 +0000 |
| parents | b0456d3a0f1f |
| children | 85d74f040712 |
line wrap: on
line diff
--- a/Python/compile.c Fri Mar 02 03:28:03 2001 +0000 +++ b/Python/compile.c Fri Mar 02 03:30:41 2001 +0000 @@ -4015,18 +4015,26 @@ return -1; /* can't get here */ } -/* Helper function to issue symbol table warnings */ +/* Helper functions to issue warnings */ + +static int +issue_warning(char *msg, char *filename, int lineno) +{ + if (PyErr_WarnExplicit(PyExc_SyntaxWarning, msg, filename, + lineno, NULL, NULL) < 0) { + if (PyErr_ExceptionMatches(PyExc_SyntaxWarning)) { + PyErr_SetString(PyExc_SyntaxError, msg); + PyErr_SyntaxLocation(filename, lineno); + } + return -1; + } + return 0; +} static int symtable_warn(struct symtable *st, char *msg) { - if (PyErr_WarnExplicit(PyExc_SyntaxWarning, msg, st->st_filename, - st->st_cur->ste_lineno, NULL, NULL) < 0) { - if (PyErr_ExceptionMatches(PyExc_SyntaxWarning)) { - PyErr_SetString(PyExc_SyntaxError, msg); - PyErr_SyntaxLocation(st->st_filename, - st->st_cur->ste_lineno); - } + if (issue_warning(msg, st->st_filename, st->st_cur->ste_lineno) < 0) { st->st_errors++; return -1; } @@ -4195,11 +4203,9 @@ PyErr_SyntaxLocation(c->c_symtable->st_filename, ste->ste_lineno); return -1; - } else { - /* XXX if the warning becomes an exception, we should - attached more info to it. */ - if (PyErr_Warn(PyExc_SyntaxWarning, buf) < 0) - return -1; + } + else { + return issue_warning(buf, c->c_filename, ste->ste_lineno); } return 0; }
