It seems to be fixed in beta 3. It's probably a bug in the interpreter as writing the snippet out and executing w/ execfile, which doesn't run under the interpreter, works in beta 2 as well.
The reason it got silently fixed was because between the two versions the interpreter was moved from M.S.Core.dll up to M.S.dll and a bunch of bugs were fixed along the way. In beta 3 the interpreter is also now always used for exec or eval - previously it avoided certain constructs it couldn't support. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dan Eloff Sent: Monday, June 23, 2008 7:02 PM To: Discussion of IronPython Subject: [IronPython] NameError: locals() is not defined? In IronPython b2 I get: >>> s = ''' ... def body(context): ... def ccall(): ... body = lambda: None ... context.update(locals()) ... ccall() ... ... ''' >>> d = {} >>> exec s in d >>> c = {} >>> d['body'](c) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "", line unknown, in Interpreted_body_1 NameError: name 'locals' is not defined This works fine in CPython: >>> s = ''' ... def body(context): ... def ccall(): ... body = lambda: None ... context.update(locals()) ... ccall() ... ... ''' >>> exec s in d >>> c = {} >>> d['body'](c) >>> c {'body': <function <lambda> at 0x0359CCB0>, 'context': {...}} Any idea why? Thanks, -Dan _______________________________________________ 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
