I tested drawview in swf and dhtml, webtop and the testcase below.

Approved, assuming you add a testcase to the compiler smoketest.

P T Withington wrote:
> Change 20091110-ptw-R by [email protected] on 2009-11-10 17:24:06 EST
>     in /Users/ptw/OpenLaszlo/trunk
>     for http://svn.openlaszlo.org/openlaszlo/trunk
> 
> Summary: Ensure closed-over parameters will not be shadowed by instance 
> members in swf8 and DHTML
> 
> Bugs Fixed: LPP-8593 Regression in swf8 compiler
> 
> Technical Reviewer: hminsky (pending)
> QA Reviewer: max (pending)
> 
> Overview:
> 
>     When I moved the "withThis" analysis from the tag compiler to the
>     script compiler (supporting LPP-7184), I missed the obscure case
>     of a parameter that is closed over by an inner function but might
>     be shadowed by an instance member.  For this case, we have to copy
>     the parameter into a context inside the `with (this)` block.  In
>     swf8, we have to actually build a context
> 
> Details:
> 
>     JavascriptGenerator, CodeGenerator: Turn off withThis if it does
>     not apply (in a script block or no possible instance references).
>     Don't rename closed-over variables, but _do_ rename closed-over
>     parameters if you withThis (you will be inserting the instance
>     into the scope chain where it might shadow the parameters).
>     Re-create the closed over parameters inside the with context.
>     (For swf8, we have to build a new context, for Javascript the
>     runtime does the right thing with a var declaration inside a
>     `with`).
> 
>     Compiler, CodeGenerator:  Remove the (obsolete) ACTIVATION_OBJECT
>     support, which is no longer needed to support closures, and
>     repurpose it to ensure closed-over parameters are not shadowed by
>     `with (this)`.
> 
>     ViewSchema:  Remove unused SETTER_TYPE, noticed in passing.
> 
> Tests:
> 
>     The following test will now display "name: 'correct'" in all 3
>     runtimes:
> 
>     <canvas>
>       <class name="test" extends="view">
>         <method name="testMethod" args="name">
>           Debug.info("%w name: %w", arguments.callee, name);
>           return function inner () {
>               Debug.info("%w name: %w", arguments.callee, name);
>             }
>         </method>
>       </class>
>       <test name='WRONG' oninit="testMethod('correct')()" />
>     </canvas>
> 
> 
> Files:
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptGenerator.java
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/Compiler.java
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/CodeGenerator.java
> M      WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
> 
> 
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20091110-ptw-R.tar

-- 
Regards,
Max Carlson
OpenLaszlo.org
_______________________________________________
Laszlo-reviews mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews

Reply via email to