Terry J. Reedy <tjre...@udel.edu> added the comment:

The SyntaxError is not relevant.  Interactive CPython:

>>> d=[]
>>> d=()
>>> d={}
>>>

Erroneous extra lines in IDLE 3.6+ Shell but not editor:

>>> d = []
         
>>> d=()
         
>>> d={}
         
>>> d=[i for i in [1]]
         
>>> 

The 'blank' lines are indents produced by IDLE's smart indent mechanism, which 
is trigger by keying '\n', *before* the code is tentatively compiled.

While the extra lines are an error for the examples above, they are arguably 
correct for your example, where there is no closing '}'.  The indenter treats 
it the same as if there were a closing quote, as in the following, which *is* 
the same in shell and editor, and correct.

d = {1: 'one}'
     # Indent lines up next dict item with the one above.

Even though your example is no a bug, it lead me to discover a regression in 
current 3.6+.  In the past year, there have been a couple of patches that 
touched the autoindent code.

----------
stage:  -> test needed
title: IDLE inserts extra blank line in prompt after SyntaxError -> IDLE: 
erroneous 'smart' indents in shell
versions: +Python 3.7, Python 3.8

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

Reply via email to