[Henry, can you have a look at this. It fixes some spurious warnings that Maynard is seeing and tries to make the names of anonymous classes more sensible. I'd like to get this in so we can branch.]
Change 20091211-ptw-z by [email protected] on 2009-12-11 17:24:36 EST in /Users/ptw/OpenLaszlo/trunk for http://svn.openlaszlo.org/openlaszlo/trunk Summary: Move (debug only) displayName from instance to class Bugs Fixed: LPP-8665 Class/displayName conflicts with existing applications Technical Reviewer: hminksy (pending) QA Reviewer: mdemmon (pending) Overview: I incorrectly put displayName on the instance not on the class in r15320. While investigating that, I discovered that interstitials were incorrectly being installed as valid tags. Eventually I ended up having to touch a whole lot of stuff to get class (constructor) names to appear as I want them: For a simple tag that adds a mixin: <view with="mix"> The class will have exactly that name (but you will not be able to look it up in `lz`, because it is not a real tag. For a tag that adds methods, thus requiring an "instance class": <view> <method ... /> </view> The class name will be: <anonymous extends="view"> Again, not entered into `lz`, it is not a tag. Finally, if you have both mixins and methods: <view with="mix"> <method ... /> </view> The class name will reflect that: <anonymous extends="view" with="mix"> All of this information goes away in non-debug builds. These classes will all have short (unique) names, for compactness. Details: smoke/debugger: Add some tests that verify that constructor names are as expected and do not collide with instance values. LzDebug, LzFormatter: Move the stringEscape method from the debugger to the formatter for more consistent output with and without the debugger. swf/LzDebug, dhtml/LzDebug: functionName: Remove obsolete 'classname' and 'name' processing. swf9/LzDebug: functionName: look for 'displayName' before the qualified name. LzText: Ensure the output of the formatter is HTML-escaped before inserting, so `LzText/format("<this is a test>")` doesn't disappear. LzMessage: The only purpose of the version of xmlEscape here is to prevent angle brackets from being misinterpreted as markup. Simplify to that task (and eliminate the bug that formatted text with newlines behaved differently in dhtml than in swf). ViewCompiler: anonymous instance classes should not be entered in the schema class table, or published as tags. ViewSchema: by default, classes are entered in both the schema class table and published as tags. ClassModel: interstitials are entered in the schema class table but not published as tags. Since anonymous classes are no longer inserted in the DOM, we can't compute a path for them for debugging -- have to rely on file/line instead. Store the base class and mixin names on anonymous and interstitial classes so we can compute a sensible name for the debugger. Tests: I added a test to smoke/debugger.lzl that verifies that constructor names are as expected and do not collide with instance values. Files: M test/smoke/debugger.lzl M WEB-INF/lps/lfc/debugger/LzDebug.lzs M WEB-INF/lps/lfc/debugger/platform/swf/LzDebug.as M WEB-INF/lps/lfc/debugger/platform/dhtml/LzDebug.js M WEB-INF/lps/lfc/debugger/platform/swf9/LzDebug.as M WEB-INF/lps/lfc/views/LzText.lzs M WEB-INF/lps/lfc/compiler/LzFormatter.lzs M WEB-INF/lps/lfc/compiler/LzMessage.lzs M WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewCompiler.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20091211-ptw-z.tar _______________________________________________ Laszlo-reviews mailing list [email protected] http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews
