On 10/11/06, P T Withington <[EMAIL PROTECTED]> wrote:
Change change.ogKuESXeY.txt by [EMAIL PROTECTED] /Users/ptw/
pending-changes/ on 2006-10-11 16:06:26 EDT
Summary: Improve debugging of classes
New Features: Debug builds now include names for function expressions
(in particular class methods) so that browser-native debuggers can
give more informative backtraces
In the Laszlo debugger, class methods will have a type '<class>
function' or '<class> static function', where <class> is the class
they are defined in.
Technical Reviewer: henry (pending)
QA Reviewer: max (pending)
Doc Reviewer: jsundman (pending)
Documentation: _javascript_ programmers should be encouraged to name
their functions, even if they are function expressions, for
debugability. Class definitions will automatically do so.
Here is a sample output showing the new format of class
methods:
lzx> Debug.inspect(«NewClass(0)#0| LzView»)
«NewClass(0)#0| LzView» {
_dbg_name: LzView
_dbg_typename: NewClass
addProperty: «NewClass static function(2)#1| addProperty»
addProxyPolicy: «LzView static function(1)#2| addProxyPolicy»
addStaticProperty: «NewClass static function(2)#3| addStaticProperty»
classname: LzView
constructor: «Object#4| NewClass»
make: «Instance static function(0)#5| make»
prototype: «LzView#6| Object »
removeProxyPolicy: «LzView static function(1)#7| removeProxyPolicy»
tagname: view
}
«NewClass(0)#0| LzView»
lzx>
Details:
LxDebug.*: remove some stale code from functionName. Generalize
DHTML function name search pattern.
Class.lzs: Do a better job of bootstrapping Instance, Class, and
Trait so they behave more correctly. Conditionalize $debug
annotation. Enable shim debug statements (which should not fire,
indicating we can remove the last vestige of shim). Add
addStaticProperty for Class and Trait, to dynamically add static
properties. Rename method `owner` to `superclass` (since that is
what it is).
LzParsedPath: remove comment re: invalid bug LPP-2414
Compiler: Remove kludge that assigned function expressions names.
This no longer works now that we are not building classes with
global assignments. Put newlines after ';' in non-compressed
mode, and emit names for function expressions in non-compressed
(debug) mode.
_javascript_Generator, CodeGenerator: remove old code that composed
function names for class methods (these names were not valid js
identifiers, so could not be used by browser-native debuggers).
Use the method name as the function name instead.
Tests:
IWFM
Files:
M lfc/debugger/platform/swf/LzDebug.as
M lfc/debugger/platform/dhtml/LzDebug.js
M lfc/core/Class.lzs
M lfc/data/LzParsedPath.lzs
M server/src/org/openlaszlo/sc/Compiler.java
M server/src/org/openlaszlo/sc/_javascript_Generator.java
M server/src/org/openlaszlo/sc/CodeGenerator.java
--
Henry Minsky
Software Architect
[EMAIL PROTECTED]
_______________________________________________ Laszlo-dev mailing list [email protected] http://www.openlaszlo.org/mailman/listinfo/laszlo-dev
