Staging
v0.8.1
Revision 15bc9ab301d73f20bff47a12ef05326feb40f797 authored by Guido van Rossum on 15 May 2020, 02:22:48 UTC, committed by GitHub on 15 May 2020, 02:22:48 UTC


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
1 parent 1aa8767
History
File Mode Size
cpython
internal
Python-ast.h -rw-r--r-- 25.6 KB
Python.h -rw-r--r-- 3.6 KB
abstract.h -rw-r--r-- 29.8 KB
asdl.h -rw-r--r-- 1.2 KB
ast.h -rw-r--r-- 947 bytes
bitset.h -rw-r--r-- 468 bytes
bltinmodule.h -rw-r--r-- 264 bytes
boolobject.h -rw-r--r-- 885 bytes
bytearrayobject.h -rw-r--r-- 1.4 KB
bytesobject.h -rw-r--r-- 3.0 KB
cellobject.h -rw-r--r-- 712 bytes
ceval.h -rw-r--r-- 5.6 KB
classobject.h -rw-r--r-- 1.6 KB
code.h -rw-r--r-- 318 bytes
codecs.h -rw-r--r-- 6.6 KB
compile.h -rw-r--r-- 3.6 KB
complexobject.h -rw-r--r-- 1.8 KB
context.h -rw-r--r-- 1.9 KB
datetime.h -rw-r--r-- 9.0 KB
descrobject.h -rw-r--r-- 2.9 KB
dictobject.h -rw-r--r-- 3.6 KB
dynamic_annotations.h -rw-r--r-- 21.9 KB
enumobject.h -rw-r--r-- 253 bytes
errcode.h -rw-r--r-- 1.6 KB
eval.h -rw-r--r-- 1.2 KB
exports.h -rw-r--r-- 1.1 KB
fileobject.h -rw-r--r-- 1.3 KB
fileutils.h -rw-r--r-- 597 bytes
floatobject.h -rw-r--r-- 4.3 KB
frameobject.h -rw-r--r-- 337 bytes
funcobject.h -rw-r--r-- 4.0 KB
genericaliasobject.h -rw-r--r-- 334 bytes
genobject.h -rw-r--r-- 3.4 KB
graminit.h -rw-r--r-- 2.1 KB
grammar.h -rw-r--r-- 1.8 KB
import.h -rw-r--r-- 3.0 KB
interpreteridobject.h -rw-r--r-- 334 bytes
intrcheck.h -rw-r--r-- 861 bytes
iterobject.h -rw-r--r-- 521 bytes
listobject.h -rw-r--r-- 1.7 KB
longintrepr.h -rw-r--r-- 3.7 KB
longobject.h -rw-r--r-- 9.3 KB
marshal.h -rw-r--r-- 803 bytes
memoryobject.h -rw-r--r-- 2.7 KB
methodobject.h -rw-r--r-- 3.7 KB
modsupport.h -rw-r--r-- 9.7 KB
moduleobject.h -rw-r--r-- 2.3 KB
namespaceobject.h -rw-r--r-- 349 bytes
node.h -rw-r--r-- 1.3 KB
object.h -rw-r--r-- 23.9 KB
objimpl.h -rw-r--r-- 8.2 KB
odictobject.h -rw-r--r-- 1.3 KB
opcode.h -rw-r--r-- 4.8 KB
osdefs.h -rw-r--r-- 737 bytes
osmodule.h -rw-r--r-- 291 bytes
parsetok.h -rw-r--r-- 2.9 KB
patchlevel.h -rw-r--r-- 1.3 KB
picklebufobject.h -rw-r--r-- 846 bytes
py_curses.h -rw-r--r-- 2.4 KB
pyarena.h -rw-r--r-- 2.7 KB
pycapsule.h -rw-r--r-- 1.7 KB
pyctype.h -rw-r--r-- 1.3 KB
pydebug.h -rw-r--r-- 1.1 KB
pydtrace.d -rw-r--r-- 1008 bytes
pydtrace.h -rw-r--r-- 2.4 KB
pyerrors.h -rw-r--r-- 12.6 KB
pyexpat.h -rw-r--r-- 2.4 KB
pyfpe.h -rw-r--r-- 444 bytes
pyframe.h -rw-r--r-- 466 bytes
pyhash.h -rw-r--r-- 4.2 KB
pylifecycle.h -rw-r--r-- 2.0 KB
pymacconfig.h -rw-r--r-- 2.9 KB
pymacro.h -rw-r--r-- 4.7 KB
pymath.h -rw-r--r-- 8.4 KB
pymem.h -rw-r--r-- 4.3 KB
pyport.h -rw-r--r-- 29.4 KB
pystate.h -rw-r--r-- 5.1 KB
pystrcmp.h -rw-r--r-- 436 bytes
pystrhex.h -rw-r--r-- 849 bytes
pystrtod.h -rw-r--r-- 1.4 KB
pythonrun.h -rw-r--r-- 7.5 KB
pythread.h -rw-r--r-- 5.8 KB
pytime.h -rw-r--r-- 8.7 KB
rangeobject.h -rw-r--r-- 628 bytes
setobject.h -rw-r--r-- 3.2 KB
sliceobject.h -rw-r--r-- 2.5 KB
structmember.h -rw-r--r-- 2.0 KB
structseq.h -rw-r--r-- 1.4 KB
symtable.h -rw-r--r-- 5.2 KB
sysmodule.h -rw-r--r-- 1.2 KB
token.h -rw-r--r-- 2.6 KB
traceback.h -rw-r--r-- 584 bytes
tracemalloc.h -rw-r--r-- 1.1 KB
tupleobject.h -rw-r--r-- 1.6 KB
typeslots.h -rw-r--r-- 2.2 KB
ucnhash.h -rw-r--r-- 1.0 KB
unicodeobject.h -rw-r--r-- 34.6 KB
warnings.h -rw-r--r-- 1.7 KB
weakrefobject.h -rw-r--r-- 2.8 KB

back to top