Tuples and lists, which are invalid augmented assignment targets, currently get successfully parsed, without failing.
➜ cpython git:(targets-fix) ✗ ./python -X oldparser
Python 3.9.0a6+ (heads/master-dirty:75cd8e48c6, May 14 2020, 03:01:42)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> (a, b) += (1, 2)
File "<stdin>", line 1
SyntaxError: illegal expression for augmented assignment
➜ cpython git:(pr/20076) ./python
Python 3.9.0a6+ (heads/pr/20076:bcf5be2772, May 14 2020, 02:15:37)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> (a, b) += 1
SystemError: invalid node type (26) for augmented assignment
We also accept arbitrary targets in `except` clauses, while we should only be accepting NAME nodes:
➜ cpython git:(master) ./python
Python 3.9.0a6+ (heads/master:75cd8e48c6, May 14 2020, 03:14:03)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> try:
... pass
... except Exception as a.b:
... pass
...
[1] 135956 segmentation fault (core dumped) ./python
|