[Laszlo-dev] Previous results of debugger evals

André Bargull andre.bargull at udo.edu
Sun Sep 27 06:08:53 PDT 2009


I've just started the work and now I stumbled across this unknown 
pragma: #pragma 'scriptElement'
What does it do?


On 9/27/2009 2:52 PM, P T Withington wrote:
> 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