New submission from Guido van Rossum <gu...@python.org>:

The traceback module formats several edge cases of SyntaxError different than 
CPython's default formatting.

- There's an off-by-one error if the column offset (printed as a caret) points 
past the last character (example: 'a +='). The clipping is wrong and the caret 
points to the last character.

- If the offset is <= 0, it appears the code silently adds the length of the 
source text.

- The system formatting suppresses the caret if the offset is -1; the only way 
to suppress the caret with the traceback module is setting the offset to None 
(or setting the source text to None).

- The system formatting can position the caret way past the end of the source 
text; the traceback module clips (also see the first bullet).

I propose to make the traceback module behave the same way as the system module 
in all cases. I also propose to make both suppress the caret if the offset is 
<= 0. Finally I propose to make the system formatting limit the offset to just 
past the end of the source text.

I propose not to bother changing anything in 3.8 or before.

----------
messages: 368759
nosy: gvanrossum, lys.nikolaou, pablogsal
priority: normal
severity: normal
status: open
title: Make traceback module's formatting of SyntaxError more similar to system 
formatting
versions: Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue40612>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to