This is because Builtin.compile is setting the SourceCodeKind to SourceCodeKind.SingleStatement and we don't turn on printExpressions for SingleStatements.
In IronPython.Compiler.Parser there is a method ParseSingleStatement. You just need to change the last parameter when newing up the PythonAst to true from false and it'll work. It should be a perfectly safe change as this is the only place in the world that uses SourceCodeKind.SingleStatement. I'll probably check-in the fix today and add a test case so we don't break it in the future - so you'll see this in the next release. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Michael Foord Sent: Wednesday, September 19, 2007 6:23 AM To: Discussion of IronPython Subject: Re: [IronPython] IronPython 2 Bug - code module and InteractiveInterpreter (stdout swallowed or not appearing) Hello all (again), A simpler way of reproducing the bug is as follows: IronPython 1 and CPython >>> c = compile('3', 'test', 'single', 0, 1) >>> exec c 3 >>> IronPython 2 >>> c = compile('3', 'test', 'single', 0, 1) >>> exec c >>> I have a 'proof-of-concept' interpreter that runs in the browser, but this bug makes it not so fun. :-( Michael Foord http://www.ironpython.info/ Michael Foord wrote: > Hello all, > > There is an annoying bug with IronPython 2 which is blocking me from > implementing an 'interactive interpreter in the browser'. > > I'm afraid I can only show how to reproduce the bug rather than > diagnose the cause. > > When executing code with the 'InteractiveInterpreter' class from the > standard library code module, the result of the last expression is > sent to stdout. This mirrors the behaviour of the normal Python > interactive interpreter. > > In IronPython 1.1 this works fine - and I can trap the output by > replacing 'sys.stdout' with my own Python object. > > In IronPython 2, this output just doesn't appear. :-( > > If you run 'test_console.py' (with the other attached files in the > same directory) with IronPython 1.1 it will print the following line > to standard out "Received (out) : 3Received (out) :". > > If you run it with IronPython 2 (I've tried it with both Silverlight > and 2.0a4) it outputs nothing. > > This is a darn shame because having an interactive interpreter in the > browser is way cool... > > Michael Foord > http://www.manning.com/foord > > > ------------------------------------------------------------------------ > > _______________________________________________ > Users mailing list > [email protected] > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
