approved!


On Tue, Mar 23, 2010 at 8:02 AM, P T Withington <[email protected]> wrote:

> Change 20100320-ptw-j by [email protected] on 2010-03-20 09:03:52 EDT
>   in /Users/ptw/OpenLaszlo/trunk-2
>   for http://svn.openlaszlo.org/openlaszlo/trunk
>
> Summary: Make instance tests work for LZX mixins
>
> Bugs Fixed: LPP-8828 LZX mixins cannot be tested for with `is`
>
> Technical Reviewer: hminsky (pending)
> QA Reviewer: max (pending)
>
> Overview:
>
>   The LZX compiler expands LZX mixins into 'interstitial' classes
>   (because it needs to override/accumulate attributes and children
>   according to the node model, so it cannot translate them directly
>   into lzs mixins).  The expansion was not annotating these classes
>   with `implements` so type tests against the base mixin would fail.
>   This change causes the interstitial classes to have the correct
>   type.
>
> Details:
>
>   compiler.lzl:  Add a unit test to verify that an LZX instance with
>   a mixin `is` that mixin.
>
>   LzCSSStyle: (Noticed in passing) use more accurate `subclassof`
>   operator in place of prototype-based approximation.
>
>   contextmenu.*:  Rebuild this using .lzo technology so that it is
>   independent of internal back-end API's (In particular, the changes
>   to the class runtime support in this change broke the previous
>   implementation.  By using a platform-independent translation, this
>   should be more robust to future compiler changes.)  The only
>   source changes were to make explicit some implicit this references
>   to silence compiler warnings.
>
>   Class.lzs: reordered arguments to allow more compact code through
>   omitting defaults.  Added a new argument `implements` to support
>   interface type tests.
>
>   ClassModel:  When expanding LZX mixins to interstitials, note the
>   mixin they implement.
>
>   The remainder of the change adds support for `implements` on lzs
>   class declarations and passes that information through to the
>   runtime so it can be used for type tests.  This meant updating the
>   Parser to accept the keyword, updating all the AST walkers to
>   understand the new structure of ASTClassDefinition, and updating
>   the generators to pass that new information to the runtime in the
>   appropriate format.
>
> Tests:
>   smokecheck on all 3 runtimes with newly added mixin subtype test.
>
> Files:
> M       test/smoke/compiler.lzl
> M       WEB-INF/lps/lfc/services/LzCSSStyle.lzs
> M       WEB-INF/lps/lfc/contextmenu.js
> M       WEB-INF/lps/lfc/contextmenu.lzx
> M       WEB-INF/lps/lfc/compiler/Class.lzs
> M       WEB-INF/lps/server/src/org/openlaszlo/js2doc/JS2Doc.java
> M       WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9Generator.java
> M       WEB-INF/lps/server/src/org/openlaszlo/sc/CommonGenerator.java
> M       WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9ParseTreePrinter.java
> M       WEB-INF/lps/server/src/org/openlaszlo/sc/ScriptClass.java
> M       WEB-INF/lps/server/src/org/openlaszlo/sc/GenericVisitor.java
> M       WEB-INF/lps/server/src/org/openlaszlo/sc/ParseTreePrinter.java
> M       WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java
> M       WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt
>
>
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20100320-ptw-j.tar
>



-- 
Henry Minsky
Software Architect
[email protected]

Reply via email to