]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
bpo-40612: Fix SyntaxError edge cases in traceback formatting (GH-20072)
authorGuido van Rossum <guido@python.org>
Fri, 15 May 2020 02:22:48 +0000 (19:22 -0700)
committerGitHub <noreply@github.com>
Fri, 15 May 2020 02:22:48 +0000 (19:22 -0700)
commit15bc9ab301d73f20bff47a12ef05326feb40f797
treee29afe19a6ce7aaa5b7f1ea3639810080ea6d2d5
parent1aa8767baf498a920f0461d1088772a12dcb4d20
bpo-40612: Fix SyntaxError edge cases in traceback formatting (GH-20072)

This fixes both the traceback.py module and the C code for formatting syntax errors (in Python/pythonrun.c). They now both consistently do the following:

- Suppress caret if it points left of text
- Allow caret pointing just past end of line
- If caret points past end of line, clip to *just* past end of line

The syntax error formatting code in traceback.py was mostly rewritten; small, subtle changes were applied to the C code in pythonrun.c.

There's still a difference when the text contains embedded newlines. Neither handles these very well, and I don't think the case occurs in practice.

Automerge-Triggered-By: @gvanrossum
Lib/test/test_cmd_line_script.py
Lib/test/test_traceback.py
Lib/traceback.py
Misc/NEWS.d/next/Library/2020-05-13-10-23-29.bpo-40612.gOIreM.rst [new file with mode: 0644]
Python/pythonrun.c