Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Description
Bug report
Bug description:
When I rundef f[Foo, Foo](): ... from a file, I get a nice error message including the location of the error:
File".../test.py",line1deff[Foo,Foo](): ...^^^SyntaxError:duplicate typeparameter'Foo'
However, when I run this in the new repl, the error location is not shown:
>>>deff[Foo,Foo](): ...File"<python-input-0>",line1SyntaxError:duplicate typeparameter'Foo'
The same thing happens with this error as well:
>>>deff(x,x): ...File"<python-input-0>",line1SyntaxError:duplicateargument'x'infunctiondefinition
The missing location seems to be the case for these two errors only as other errors do show it:
>>>deff(42): ...File"<unknown>",line1deff(42): ...^^SyntaxError:invalidsyntax
What's interesting is that for the first two errors the file shows up as<python-input-0> while for the last one it's<unknown>. This could be related to the last error coming from the parser while the previous errors come from symtable:
Lines 1421 to 1435 in6522f0e
| if ((o=PyDict_GetItemWithError(dict,mangled))) { | |
| val=PyLong_AS_LONG(o); | |
| if ((flag&DEF_PARAM)&& (val&DEF_PARAM)) { | |
| /* Is it better to use 'mangled' or 'name' here? */ | |
| PyErr_Format(PyExc_SyntaxError,DUPLICATE_ARGUMENT,name); | |
| SET_ERROR_LOCATION(st->st_filename,loc); | |
| gotoerror; | |
| } | |
| if ((flag&DEF_TYPE_PARAM)&& (val&DEF_TYPE_PARAM)) { | |
| PyErr_Format(PyExc_SyntaxError,DUPLICATE_TYPE_PARAM,name); | |
| SET_ERROR_LOCATION(st->st_filename,loc); | |
| gotoerror; | |
| } | |
| val |=flag; | |
| } |
Though it looks like that the error location is being set withSET_ERROR_LOCATION..
CPython versions tested on:
CPython main branch
Operating systems tested on:
Linux
Linked PRs
- gh-121804: always show error location for SyntaxError's in new repl #121886
- [3.13] gh-121804: Always show error location for SyntaxError's in new repl (GH-121886) #123148
- gh-121804: always show error location for SyntaxError's in basic repl #123202
- [3.12] gh-121804: Backport idlelib.pyshell change (GH-121886) #123366
- [3.13] gh-121804: always show error location for SyntaxError's in basic repl (GH-123202) #123631