diff options
author | Benjamin Peterson <benjamin@python.org> | 2008-08-16 22:11:33 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2008-08-16 22:11:33 (GMT) |
commit | 0847332716d538cc500f8495ddae81510d05b205 (patch) | |
tree | d7bd732c0078eec4602af2c1ac521d6c2c57985d | |
parent | 721b1457a0e36e49fe7f94a8f826661aa871fb08 (diff) | |
download | cpython-0847332716d538cc500f8495ddae81510d05b205.zip cpython-0847332716d538cc500f8495ddae81510d05b205.tar.gz cpython-0847332716d538cc500f8495ddae81510d05b205.tar.bz2 |
include filename and line number in SyntaxError
-rw-r--r-- | Lib/test/test_syntax.py | 2 | ||||
-rw-r--r-- | Python/symtable.c | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index 6e60706..e978a6e 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -5,7 +5,7 @@ Here's an example of the sort of thing that is tested. >>> def f(x): ... global x Traceback (most recent call last): -SyntaxError: name 'x' is local and global +SyntaxError: name 'x' is local and global (<doctest test.test_syntax[0]>, line 1) The tests are all raise SyntaxErrors. They were created by checking each C call that raises SyntaxError. There are several modules that diff --git a/Python/symtable.c b/Python/symtable.c index cc3c774..2f0b889 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -373,6 +373,9 @@ analyze_name(PySTEntryObject *ste, PyObject *dict, PyObject *name, long flags, PyErr_Format(PyExc_SyntaxError, "name '%s' is local and global", PyString_AS_STRING(name)); + PyErr_SyntaxLocation(ste->ste_table->st_filename, + ste->ste_lineno); + return 0; } SET_SCOPE(dict, name, GLOBAL_EXPLICIT); |