We need to figure out why we moved them after the script then. I think they used to be first and we moved them for some reason. I think it had to so with when you added the platform-specific binaries.
On Jan 27, 2011, at 21:15, Henry Minsky <[email protected]> wrote: > I found that if I (manually) move the <mixin> and <interface> declarations in > the lzo file to > come before the <script> element, that the compiled app then runs because > the script output has the Mixin.make emitted before the Class.make's. > > So in compiler/MixinCompiler#compile method I guess it calls > ClassCompiler#compile, which calls classModel.compile(), and that emits the > Mixin.make to script > > > On Thu, Jan 27, 2011 at 11:14 AM, P T Withington <[email protected]> wrote: > I have a change that is very close to solving the LZO problem, but is still > failing the lzo regression test in `ant lztest`. I could use some help, > because I have banged my head against this for 2 days with no progress. > > The symptom is: > > > [exec] js: "test/lztest/lztest-lzo-main.js", line 547: uncaught > > JavaScript runtime exception: ReferenceError: "$lzc$class_lzomixin" is not > > defined. > > There is an interstitial class being created that implements the `lzomixin` > class. I've put in print statements and can see that the compiler is > compiling the `lzomixin` class before the interstitial class, yet in the > resulting .js file, it is textually later!?!?! and as a result, bombs because > it is not defined before used. > > I'm pulling my hair out trying to figure out how the stuff could end up in > the output file in a different order than how the Schema compiler writes it. > I fooled myself thinking that the script compiler re-ordered classes when it > wrote them, but I can't find any such code anywhere. > > Any chance you guys could take a look at this change and see if you can track > it down? > > Change ptw-20110127-5Th by [email protected] on 2011-01-27 11:03:43 EST > in /Users/ptw/OpenLaszlo/trunk-3 > for http://svn.openlaszlo.org/openlaszlo/trunk > > Summary: Only emit mixins as interfaces when linking > > Bugs Fixed: LPP-9691 Child nodes not created for instance classes when > created in LZO > > Technical Reviewer: [email protected] (pending) > QA Reviewer: [email protected] (pending) > > Details: > > Mixins eventually have to be written out as 'interfaces' so that > all the interstitials that implement them can refer to them in > their 'implements' clause, but we can't have more than one copy, > so we can't write them into an LZO. Instead, we have to notice > when we are linking and write them out then. > > Tests: > ant lztest > > Files: > M WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java > > Changeset: http://svn.openlaszlo.org/openlaszlo/patches/ptw-20110127-5Th.tar > > > > -- > Henry Minsky > Software Architect > [email protected] > >
