OK, well, if I output just
"dynamic mixin foo { }" then the swf10 compiler feels like it has to make an
interface for it, and
the code it puts out isn't
really well formed, so it barfs.
e.g., if I have a declared mixin
<mixin name="boxmodel">
<attribute name="margin" type="number" value="0"/>
<setter name="margin" args="margin">
Debug.warn('set_margin', margin, this);
</setter>
</mixin>
that eventually turns into a ScriptClass which is
mixin $lzc$class_boxmodel
and that gets converted by the swf10 backend into a .as file
package {
dynamic interface $lzc$class_boxmodel {
}
}
So do we need to stop the swf10 generator from outputting anything at all
for the mixin case?
On Sat, Dec 5, 2009 at 5:51 AM, P T Withington <[email protected]> wrote:
> Right now we don't support mixins extending anything. See what happens if
> you suppress the 'extends' clause when you output a mixin?
>
> On Dec 5, 2009, at 1:11, Henry Minsky <[email protected]> wrote:
>
> I need some help in hacking the script compiler back end to understand
> "mixin".
>
> Currently we're passing the follwing values for 'kind' from ClassModel,
>
> mixin
> class
> instance class
> anonymous
>
> If I just emit "class" for everything except "mixin", something in the
> DHTML backend stil
> chokes on "mixin":
>
> "dynamic mixin $lzc$class_testmixin extends LzView "
>
> compiles to something which causes a runtime error.
>
> [exec] js: "lps/includes/lfc/LFCdhtml-debug.js", line 298: uncaught
> JavaScript runtime exception: TypeError: Cannot find function make in object
>
> [exec] function () {
> [exec] this.constructor = arguments.callee;
> [exec] if (this.$lzsc$initialize !==
> Instance.prototype.$lzsc$initialize) {
> [exec] this.$lzsc$initialize.apply(this, arguments);
> [exec] }
> [exec] }
> [exec] .
> [exec] at lps/includes/lfc/LFCdhtml-debug.js:298
> [exec] at test/lztest/lztest-mixins.js:153
> [exec] at tmp/test_lztest_lztest-mixins.js:99
>
>
>
>
>
>
> On Fri, Dec 4, 2009 at 6:03 PM, P T Withington < <[email protected]>
> [email protected]> wrote:
>
>> On 2009-12-04, at 17:47, Henry Minsky wrote:
>>
>> > On Fri, Dec 4, 2009 at 5:41 PM, P T Withington <<[email protected]>
>> [email protected]>wrote:
>> >
>> >> I don't see in ScriptClass that it is using `kind` in toString. Is the
>> >> changeset up to date?
>> >>
>> >
>> > So for the ScriptClass.toString method , should I only output a
>> non-empty
>> > string if it's a "class" kind , or just pass
>> > along any class/mixin/interface to the script compiler
>>
>> Where toString has the literal "class" use the variable `kind` instead,
>> and let the script compiler sort it out.
>>
>> "dynamic class" + ...
>>
>> =>
>>
>> "dynamic " + kind + ...
>>
>>
>> >
>> >>
>> >> It seems that you should not need to make a copy of the element
>> children in
>> >> ViewCompiler (nor in ClassCompiler), since you're not munging the DOM
>> in
>> >> ClassModel any more.
>> >>
>> >
>> > oh yeah..
>> >
>> >
>> >>
>> >> So, not quite approved yet...
>> >>
>> >> On 2009-12-04, at 17:31, Henry Minsky wrote:
>> >>
>> >>>
>> >>> really passes smokecheck now, in swf8,swf10, and dhtml
>> >>>
>> >>>
>> >>> Change 20091204-hqm-g by [email protected] on 2009-12-04 10:17:09
>> EST
>> >>> in /Users/hqm/openlaszlo/trunk6
>> >>> for <http://svn.openlaszlo.org/openlaszlo/trunk>
>> http://svn.openlaszlo.org/openlaszlo/trunk
>> >>>
>> >>> Summary: fix for instance-mixin fails for non-top-level instance
>> >>>
>> >>> New Features:
>> >>>
>> >>> Bugs Fixed: LPP-8654 instance-mixin fails for non-top-level instance
>> >>>
>> >>> Technical Reviewer: ptw
>> >>> QA Reviewer: max
>> >>> Doc Reviewer: (pending)
>> >>>
>> >>> Documentation:
>> >>>
>> >>> Release Notes:
>> >>>
>> >>> Overview:
>> >>>
>> >>>
>> >>> Details:
>> >>>
>> >>> + ViewCompiler: updateSchema recursively map over child elements
>> >>>
>> >>> + ClassModel: remove code in ClassModel that inserted a classdef into
>> the
>> >> DOM.
>> >>>
>> >>> + ScriptClass: added a "kind" field
>> >>>
>> >>> + updated lztest smoke check for mixins to have non-toplevel node with
>> >> mixin
>> >>>
>> >>> Tests:
>> >>>
>> >>> test case from bug
>> >>> test/mixins.lzx
>> >>> smokecheck
>> >>> test/smoke/mixin-simple.lzx
>> >>>
>> >>>
>> >>> Files:
>> >>> M test/lztest/lztest-mixins.lzx
>> >>> M WEB-INF/lps/server/src/org/openlaszlo/sc/ScriptClass.java
>> >>> M
>> WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewCompiler.java
>> >>> M WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java
>> >>>
>> >>>
>> >>> Changeset:
>> >> <http://svn.openlaszlo.org/openlaszlo/patches/20091204-hqm-g.tar>
>> http://svn.openlaszlo.org/openlaszlo/patches/20091204-hqm-g.tar
>> >>>
>> >>> _______________________________________________
>> >>> Laszlo-reviews mailing list
>> >>> <[email protected]>[email protected]
>> >>> <http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews>
>> http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews
>> >>
>> >>
>> >
>> >
>> > --
>> > Henry Minsky
>> > Software Architect
>> > <[email protected]>[email protected]
>>
>>
>
>
> --
> Henry Minsky
> Software Architect
> <[email protected]>[email protected]
>
>
> _______________________________________________
> Laszlo-reviews mailing list
> [email protected]
> http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews
>
>
--
Henry Minsky
Software Architect
[email protected]
_______________________________________________
Laszlo-reviews mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews