[Laszlo-dev] For Review: Change 20080209-dda-7 Summary: SWF9 mixin support
P T Withington
ptw at openlaszlo.org
Sun Feb 10 10:57:33 PST 2008
This looks great! Approved.
Comment: In Javascript, symbols begining with $ are supposed to be
reserved for internal implementation, so we really are within our
rights to use that. If we really cared, we could escape user $ by
doubling them or something, but I don't see any reason to.
On 2008-02-09, at 14:28 EST, Donald Anderson wrote:
> Change 20080209-dda-7 by dda at lester.local on 2008-02-09 13:57:38 EST
> in /Users/dda/laszlo/src/svn/openlaszlo/branches/devildog
> for http://svn.openlaszlo.org/openlaszlo/branches/devildog
>
> Summary: SWF9 mixin support
>
> New Features:
>
> Bugs Fixed: LPP-5266
>
> Technical Reviewer: ptw (pending)
> QA Reviewer: promanik (pending)
> Doc Reviewer: (pending)
>
> Documentation:
>
> Release Notes:
>
> Details:
> The mixin support follows the design given by Tucker in LPP-5266.
>
> In SWF9Generator, when a mixin is seen, it is recorded in
> mixinDef hashmap.
> For each use of a mixin combination, the needed interstitials are
> recorded in
> the mixinRef hashmap, and all we need to do to the referencing
> class is change
> its superclass to be the interstitial.
>
> Each mixin declaration AST is duplicated - one is processed
> like a class and one like an interface.
> (CommonGenerator:translateClassDirectivesBlock
> now knows three ways to process a class - the third being to
> create a property list).
> The 'interface' version of the mixin remains in the parse tree
> and is emitted
> as the interface. The 'class' version of the mixin is what is
> put into mixinDef.
>
> After we are done processing the AST, we visit the mixinRef map
> and for each entry,
> we append a new class to the parse tree that implements the
> interstitial.
>
> In unparsing, we need to track the current class name, since
> constructors within
> interstitials need that as their name (and not their original
> name which matches
> the mixin). Arguably this could be handled when the tree is
> created, but currently
> we are sharing all the contents of the interstitial AST with
> possibly other interstitials.
> Also in unparsing, bodies of functions for interfaces are handled
> differently, so
> we must track when we are in an interface.
>
> The changes only affect the implementation of mixins for SWF9.
> It should be
> possible to push this implementation into generic javascript
> eventually.
> That seemed too big for this moment.
>
> Tests:
> regression tests: smoke/lzpix/weather for DHTML, SWF8 and henry's
> hello for SWF9
> mixin tests: for this, verified they compiled and checked
> contents by eye.
> constructors in mixins
> public/private methods in mixins
> vars in mixins
> mixins can appear after usage
> overridden methods possible
> multiple mixins
> Not yet tested - converting LFC9 classes back to use mixins.
>
> Files:
> 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/Compiler.java
> M WEB-INF/lps/server/src/org/openlaszlo/sc/ParseTreePrinter.java
> M WEB-INF/lps/server/sc/src/org/openlaszlo/sc/parser/
> ASTIdentifier.java
>
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20080209-dda-7.tar
>
>
>
> --
>
> Don Anderson
> Java/C/C++, Berkeley DB, systems consultant
>
> voice: 617-547-7881
> email: dda at ddanderson.com
> www: http://www.ddanderson.com
>
>
>
>
More information about the Laszlo-dev
mailing list