Change 20071211-dda-Y by [EMAIL PROTECTED] on 2007-12-11 10:58:29 EST
    in /Users/dda/laszlo/src/svn/openlaszlo/branches/devildog
    for http://svn.openlaszlo.org/openlaszlo/branches/devildog

Summary: lztest-node fixes for SWF9

New Features: none

Bugs Fixed: LPP-5234

Technical Reviewer: ptw (pending)
QA Reviewer: (pending)
Doc Reviewer: (pending)

Documentation: none

Release Notes: none

Details:
This change addresses several issues related to building lztest- node in SWF9.

  + lztestmanager was written using 'old style' class definition.
We could have found a way to make this work, but it seemed much better to take advantage of the new capabilities of defining classes via 'class' keywords, etc.

+ Many methods reference global variables. These variables either appear as part of the default application class, or become true 'globals'. In the former case, we need to potentially emit 'with (this)' or 'with (lzDefaultAppliation)', apparently depending on whether the method is within the default application or not. In the latter case, the users of the global variable are fine, but the variable needs to be emitted in its own source file. This seems to be the only way to create a standalone
    global variable in SWF9.
       package {
        public var global = null;
       }

+ Normally the JavascriptGenerator remaps local variables to names like $1, $2, etc. This was even happening for 'class variables' in explicitly declared classes:
      class foo {
         var x = 1;
         function bar() {
            x++;
         }
      }
x would be renamed to $1, and the references to it (from bar) were not remapped. Even if we could remap all, this would not be appropriate if x were public (really only private should be remapped for this case). In SWF9, we simply disable this remapping for now. Undoubtedly, we'll need this conditionally (I left in a TODO) but it's easiest to make progress by deferring this.

+ Fixed some small problems related to string manipulation of generated code. For SWF9, generated code contains 'annotations', that is line and classname information embedded in the generated Strings. These annotations are stripped out when writing the text to a file, but is also used to build line number tables and direct output to the proper filename. When making simple manipulations, like 'remove a semicolon from the last character of a string', care must be taken to not remove any part of the annotation. Fortunately, very little string manipulation occurs after code
    is generated.

Tests:

Files:
M      WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptGenerator.java
M      WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9Generator.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      lps/components/lztest/lztestmanager.lzx

Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20071211-dda- Y.tar



--

Don Anderson
Java/C/C++, Berkeley DB, systems consultant

Voice:  617-547-7881
Email:  [EMAIL PROTECTED]
WWW:    http://www.ddanderson.com

Reply via email to