[Laszlo-dev] Previous results of debugger evals
P T Withington
ptw at pobox.com
Sun Sep 27 05:52:19 PDT 2009
Yes, they should be accessible in complex expressions (evaluated in
the debugger). And yes, it is probably a simple matter of updating
compileAndWriteToSWF. I just think no one ever got around to it. It
would be great if you want to do that.
On 2009-09-27, at 08:49, André Bargull wrote:
> So, should it be possible to access these shortcuts anywhere else
> than while eval'ing an expression and/or should it be possible to
> use them in complex expressions? At least according to the Lisp
> reference, it should be possible to use them in complex expressions,
> but that's currently only possible in swf8 and dhtml. And only in
> swf8, you can access the values globally, but that doesn't seem to
> be intended as you said below.
> If Compiler#compileAndWriteToSWF() and Compiler#compileAndWriteToAS3
> () are changed to include `with (Debug.environment) { ... }`, it
> should be possible to use the shortcuts in complex expressions and
> avoid polluting the global namespace. These changes seem to be quite
> easy or did I miss anything?
>
>
> On 9/27/2009 1:46 PM, P T Withington wrote:
>> These are shortcuts that old Lisp hackers know by heart (http://bit.ly/2Ll3qS
>> ), although they have been renamed to be legal Javascript symbols.
>> This is why we have not felt any need to document them. :)
>> They are supposed to work in all runtimes. In an attempt to reduce
>> global namespace pollution, I moved them out of the global
>> namespace into `Debug.environment` (which is where they more
>> properly belong -- the Debugger should not be storing its state in
>> the application's namespace), as is stated in your first
>> reference. See the note at line 91 of swf9/LzDebug.as. What
>> really needs to happen is for the swf9 debug evaluator to wrap
>> `with (Debug.environment) { ... }` around the expressions it
>> compiles, just as dhtml/LzDebug.js does in `doEval`. I think this
>> has to happen in the compiler, not the debugger, because of the
>> other code the compiler wraps around evaluations to heuristicate
>> whether it is an expression or statement and to report errors.
>> On 2009-09-27, at 07:06, André Bargull wrote:
>>> The last three results of debugger evals are stored in '_', '__'
>>> and '___' to provide a fast way to access these values again.
>>> Currently, swf8 stores the values in the global object, whereas
>>> AS3 runtimes store the values in the global object "global". This
>>> means in swf8 you could write 'Debug.write("last result was %#w",
>>> _)', but this is currently not possible in swf9/swf10. My
>>> question: Should this be considered as a bug? I don't think there
>>> is any official documentation for these short-hands [1], so maybe
>>> it was only intended that '_' as a single expression should work?!
>>>
>>> PS: '_' as a single expression works in swf9/swf10, because that's
>>> a "simple expression" and therefore handled by "evalSimpleExpr"
>>> which calls "globalValue" and "globalValue" looks up values in the
>>> global object "global".
>>>
>>> [1] Google only found these two results:
>>> - http://www.openlaszlo.org/pipermail/laszlo-dev/2009-June/021356.html
>>> - http://jira.openlaszlo.org/jira/browse/LPP-630
More information about the Laszlo-dev
mailing list