diff options
author | Benjamin Peterson <benjamin@python.org> | 2010-09-20 22:42:10 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2010-09-20 22:42:10 (GMT) |
commit | 2c53971b37cd69f45d52c498c953734f961deb77 (patch) | |
tree | 6fa5bb08f26cad8da01998fb92ae0d5650924438 /Python/errors.c | |
parent | 26d64aeee4face9f6929f4207647b0052ad27c36 (diff) | |
download | cpython-2c53971b37cd69f45d52c498c953734f961deb77.zip cpython-2c53971b37cd69f45d52c498c953734f961deb77.tar.gz cpython-2c53971b37cd69f45d52c498c953734f961deb77.tar.bz2 |
add PyErr_SyntaxLocationEx, to support adding a column offset
Diffstat (limited to 'Python/errors.c')
-rw-r--r-- | Python/errors.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/Python/errors.c b/Python/errors.c index 4ae661a..a24095d 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -780,12 +780,18 @@ PyErr_WriteUnraisable(PyObject *obj) extern PyObject *PyModule_GetWarningsModule(void); +void +PyErr_SyntaxLocation(const char *filename, int lineno) { + PyErr_SyntaxLocationEx(filename, lineno, -1); +} + + /* Set file and line information for the current exception. If the exception is not a SyntaxError, also sets additional attributes to make printing of exceptions believe it is a syntax error. */ void -PyErr_SyntaxLocation(const char *filename, int lineno) +PyErr_SyntaxLocationEx(const char *filename, int lineno, int col_offset) { PyObject *exc, *v, *tb, *tmp; @@ -802,6 +808,16 @@ PyErr_SyntaxLocation(const char *filename, int lineno) PyErr_Clear(); Py_DECREF(tmp); } + if (col_offset >= 0) { + tmp = PyLong_FromLong(col_offset); + if (tmp == NULL) + PyErr_Clear(); + else { + if (PyObject_SetAttrString(v, "offset", tmp)) + PyErr_Clear(); + Py_DECREF(tmp); + } + } if (filename != NULL) { tmp = PyUnicode_FromString(filename); if (tmp == NULL) |