On 9/28/2009 5:46 PM, P T Withington wrote:
> The officially supported way to create a binding that persists in the 
> debugger is to say:
> 
>   var foo = something;
> 
> That should create Debug.environment['foo'] and bind it to `something`.
> 

It should be in 'Debug.environment', but currently swf8 and dhtml create 
global variables. In swf9, you get only a local variable which is no 
longer available after you've evaluated the expression, so the variable 
is neither available in 'Debug.environment' nor in global.


> If you simply say:
> 
>   foo = something;
> 
> that it magically creates a global binding on some platforms is an 
> artifact of JS1's global implementation.  I have to confess, I'm not 
> sure what the AS3 semantics are supposed to be, if you try to assign to 
> a non-existent reference.  A with-block does mean the lookup has to be 
> dynamic, but if there is no reference found, that should be an error.  
> Perhaps this is really an AS3 runtime bug.
> 
> ---
> 
> Did you test that `var foo ...` creates a binding in Debug.environment 
> that you can later refer to in swf9+?  This works in swf8 by the 
> compiler 'scriptElement' kludge that transforms top-level declarations 
> in a function into global assignments (relying on the JS1 global 
> semantics).  In swf9+ we could extend this kludge by allowing you to 
> specify an Object to use (in lieu of the JS1 global object).  In the 
> debug eval case, the object would be Debug.environment.  But see also:  
> (http://jira.openlaszlo.org/jira/browse/LPP-6837).

No, as explained above, it doesn't create any bindings. (But this is not 
a regression due to my change.)



> 
> On 2009-09-28, at 11:21, Henry Minsky wrote:
> 
>> Yeah this has always been a not-officially supported but useful feature,
>> that you could say "foo = something" and create a global, or at least
>> something that acts like a global in the expressions
>> you write in the debugger.
>>
>> It would be great if we could figure out a way to make this work in 
>> swf10. I
>> wonder if we could go so far as to try to recognize statements of the 
>> form
>> "somevar = someexpression" and put code that wraps around to
>> check if "somevar" is not yet defined, and if so, to define it in the
>> Debug.environment.
>>
>>
>> On Mon, Sep 28, 2009 at 9:54 AM, André Bargull 
>> <[email protected]>wrote:
>>
>>> Forget to mention:
>>> There is now a funny effect in swf9/swf10 because of the with-block. You
>>> can evaluate the expression 'lzx> foo = 42' even if 'foo' is not a 
>>> defined
>>> variable, but if you later want to retrieve the value of 'foo' by 
>>> evaluating
>>> 'lzx> foo', the runtime reports a ReferenceError. Without the 
>>> with-block,
>>> you'd get a static compiler error because 'foo' is not defined. But 
>>> as the
>>> with-block forces dynamic look-up, the runtime needs perform this 
>>> check, but
>>> apparently fails for assignment expressions, only dereferencing gives 
>>> the
>>> ReferenceError. I'd consider this as a bug...
>>>
>>>
>>>
>>> On 9/28/2009 3:28 PM, André Bargull wrote:
>>>
>>>> Change 20090928-bargull-YnE by barg...@dell--p4--2-53 on 2009-09-28
>>>> 12:39:38
>>>> in /home/Admin/src/svn/openlaszlo/trunk
>>>> for http://svn.openlaszlo.org/openlaszlo/trunk
>>>>
>>>> Summary: update eval-script compiler to use Debug.environment
>>>>
>>>> New Features: LPP-8519 (wrap evalscript in 
>>>> "with(Debug.environment){...}")
>>>>
>>>> Bugs Fixed:
>>>>
>>>> Technical Reviewer: ptw
>>>> QA Reviewer: hqm
>>>> Doc Reviewer: (pending)
>>>>
>>>> Documentation:
>>>>
>>>> Release Notes:
>>>>
>>>> Details:
>>>> Compiler.java:
>>>> Added "compileEvalScript()" to avoid duplicate code for swf8 and AS3
>>>> runtimes. Every eval-script is now surrounded with 
>>>> "with(Debug.environment)
>>>> {...}" in order to allow eval-expressions to access properties from the
>>>> Debugger environment.
>>>> For swf8 compilation, the catch block only caught
>>>> "sc.parser.ParseException", this is now just "Exception" (it was 
>>>> already
>>>> just "Exception" for swf9), so every possible exception is caught (e.g.
>>>> otherwise an unterminated multi-line comment throws the compiler out of
>>>> whack).
>>>> Apparently it's no longer necessary to prepend "_level0" before 
>>>> references
>>>> to "Debug" in swf8, so I removed it. I've also added try-catch for 
>>>> swf8 like
>>>> it's already done in swf9, because otherwise throwing an Error leads a
>>>> timeout of the eval-request (see 1st comment on LPP-8519). And I 
>>>> wonder how
>>>> remote debug requests did work in the past, because there was a stray
>>>> semicolon in the code (l.493). And made sure that 
>>>> Debug.sockWriteAsXML() is
>>>> always called for remote debug request, so the Debug.inEvalRequest 
>>>> flag gets
>>>> updated.
>>>> Also removed the excessive import list for swf9, because it has no use
>>>> since the script isn't executed in "DebugExec" but in "DebugEvaluate".
>>>> LzDebug.as (swf8):
>>>> - removed override of "displayResult()", no longer necessary
>>>> LzDebug.as (swf9):
>>>> - removed override of "displayResult()", no longer necessary
>>>> - cleaned up imports
>>>> - removed '_', '__' and '___', no longer global
>>>> - removed "TODO" from comment in "IDForObject()"
>>>> LzMemory.lzs:
>>>> - updated to use "Debug.environment" instead of "global" for '_', 
>>>> '__' and
>>>> '___'
>>>> LzCanvas.lzs:
>>>> - added "swf10" to the supported runtimes comment
>>>>
>>>>
>>>>
>>>> Tests:
>>>> try eval'ing expression, statements and erroneous inputs in swf8, swf9,
>>>> swf10
>>>>
>>>> Files:
>>>> M WEB-INF/lps/lfc/debugger/platform/swf/LzDebug.as
>>>> M WEB-INF/lps/lfc/debugger/platform/swf9/LzDebug.as
>>>> M WEB-INF/lps/lfc/debugger/LzMemory.lzs
>>>> M WEB-INF/lps/lfc/views/LaszloCanvas.lzs
>>>> M WEB-INF/lps/server/src/org/openlaszlo/compiler/Compiler.java
>>>>
>>>> Changeset:
>>>> http://svn.openlaszlo.org/openlaszlo/patches/20090928-bargull-YnE.tar
>>>>
>>>>
>>>>
>>
>>
>> -- 
>> Henry Minsky
>> Software Architect
>> [email protected]
> 
> 
_______________________________________________
Laszlo-reviews mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews

Reply via email to