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

In interactive mode, multiline statements are terminated with a blank line. 
Your examples lacks that, so the 3rd line is part of the def and lacking the 
proper indent, is indeed a syntax error. You get the same with the standard 
command-line interpreter.
>>> def f():
...     return 42
... f()
  File "<stdin>", line 3
    f()
    ^
SyntaxError: invalid syntax

That said, adding a blank line still gives a syntax error in IDLE, instead of 
ignoring the extra statement, while the interpreter prints 42. IDLE requires an 
explicit blank line from the keyboard to terminate compound statements; pasted 
blank lines do not count #3559 (which I now see you commented on - I should 
have been notified but was not).

I suspect you are correct about the dependency on code.InteractiveConsole(), 
but I have not looked at the IDLE code either.

In the meanwhile, either paste multiple statements in the the real interpreter 
or into an IDLE window and use F5 run.

----------
nosy: +terry.reedy
type:  -> feature request
versions:  -Python 2.7

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

Reply via email to