[Laszlo-dev] any idea why lzNode is trying to bind a name on an instance which is a method name ?

P T Withington ptw at pobox.com
Mon Mar 31 07:05:15 PDT 2008


Do you want to try this?

Index: ClassCompiler.java
===================================================================
--- ClassCompiler.java	(revision 8481)
+++ ClassCompiler.java	(working copy)
@@ -351,6 +351,11 @@
                }
                inits.put(key,  
((NodeModel.BindingExpr)value).getExpr());
            } else if (value instanceof Function &&
+                     // Don't output functions that are not in the
+                     // class model as methods -- these are constraint
+                     // support closures that need to be able to be
+                     // replaced in subclasses
+                     classModel.getAttribute(key) &&
                       ((! isstate) ||
                        className.equals(key))) {
              // Methods are just decls.  Except in states, because they


On 2008-03-31, at 09:43 EDT, Henry Minsky wrote:
> I guess since constraint methods don't need to call super(), it  
> would be OK
> for them to be closures. But what about their dependency function/ 
> method?
> Does that also need to be a closure instead of a method? Or is that
> already just a closure?
>
> On Mon, Mar 31, 2008 at 8:12 AM, P T Withington <ptw at pobox.com> wrote:
>
>> This is because there is a constraint in the base class and then in  
>> the
>> instance we are trying to install a new constraint.  Either we need  
>> to bite
>> the bullet and make instances be classes now, or maybe we should  
>> back off
>> and not make the constraint methods be methods, just leave them as  
>> closures
>> so they can be 'overridden' in instances by setting (rather than
>> subclassing).  I'm trying to think what the most expedient change  
>> would
>> be...
>>
>>
>> On 2008-03-30, at 22:03 EDT, Henry Minsky wrote:
>>
>>> In my checkbox example, when I run it, it gets an error here , about
>>> trying
>>> to set a property on an node which
>>> is the name of an existing method:
>>>
>>>
>>> ReferenceError: Error #1037: Cannot assign to a method
>>> $lzc$bind_reference
>>> on .$lzc$class_multistatebutton.
>>>  at LzNode/addProperty()[/private/tmp/lzswf9/lzgen35129/LzNode.as:6]
>>>  at LzNode()[/private/tmp/lzswf9/lzgen35129/LzNode.as:60]
>>>  at LzView()[/private/tmp/lzswf9/lzgen35129/LzView.as:6]
>>>  at $lzc$class_basecomponent()[/private/tmp/lzswf9/lzgen15637/$lzc$
>>> class_basecomponent.as:260]
>>>  at $lzc$class_basebutton()[/private/tmp/lzswf9/lzgen15637/$lzc$
>>> class_basebutton.as:153]
>>>  at $lzc$class_multistatebutton()[/private/tmp/lzswf9/ 
>>> lzgen15637/$lzc$
>>> class_multistatebutton.as:67]
>>>  at LzNode/makeChild()[/private/tmp/lzswf9/lzgen35129/LzNode.as:393]
>>>  at
>>>
>>> LzInstantiatorClass/makeSomeViews()[/private/tmp/lzswf9/lzgen35129/ 
>>> LzInstantiatorClass.as:106]
>>>  at
>>>
>>> LzInstantiatorClass/checkQ()[/private/tmp/lzswf9/lzgen35129/ 
>>> LzInstantiatorClass.as:79]
>>>  at LzEvent/sendEvent()[/private/tmp/lzswf9/lzgen35129/LzEvent.as: 
>>> 50]
>>>  at
>>>
>>> LFCApplication/__idleupdate()[/private/tmp/lzswf9/lzgen35129/ 
>>> LFCApplication.as:179]
>>>  at
>>>
>>> LzIdleKernel$/__update()[/private/tmp/lzswf9/lzgen35129/ 
>>> LzIdleKernel.as:26]
>>>  at Function/http://adobe.com/AS3/2006/builtin::apply()<http://adobe.com/AS3/2006/builtin::apply%28%29 
>>> >
>>>  at <anonymous>()
>>>  at SetIntervalTimer/onTimer()
>>>  at flash.utils::Timer/_timerDispatch()
>>>  at flash.utils::Timer/tick()
>>>
>>>
>>>
>>> or, another view of the stack trace from fdb :
>>> [SWF] private:tmp:lzswf9:lzgen15637:app.swf - 198,974 bytes after
>>> decompression
>>> (fdb) c
>>> [trace] idle timer period =  14 msecs
>>> [trace] LzCanvas.init called
>>> [trace] dummy LzBrowser getInitArg declared in core/dummyclasses.js
>>> [Fault] exception, information=ReferenceError: Error #1037: Cannot
>>> assign to
>>> a method $lzc$bind_reference on .$lzc$class_multistatebutton.
>>> Fault, addProperty() at LzNode.as:6
>>> 6     this[key] = val
>>> (fdb)
>>> (fdb) bt
>>> #0   this = [Object 28590241,
>>>
>>> class='$lzc$class_multistatebutton'].LzNode/addProperty(key="$lzc 
>>> $bind_reference",
>>> val=[Function 28678033, name='Function-701']) at LzNode.as:6
>>> #1   this = [Object 28590241,
>>> class='$lzc$class_multistatebutton'].LzNode(parent=[Object 28616785,
>>> class='$lzc$class_checkbox'], attrs=[Object 28686545,  
>>> class='Object'],
>>> children=null, instcall=true) at LzNode.as:60
>>> #2   this = [Object 28590241,
>>> class='$lzc$class_multistatebutton'].LzView(parent=[Object 28616785,
>>> class='$lzc$class_checkbox'], attrs=[Object 28686545,  
>>> class='Object'],
>>> children=null, instcall=true) at LzView.as:6
>>> #3   this = [Object 28590241,
>>>
>>> class='$lzc$class_multistatebutton'].$lzc 
>>> $class_basecomponent(parent=[Object
>>> 28616785, class='$lzc$class_checkbox'], attrs=[Object 28686545,
>>> class='Object'], children=null, async=true) at $lzc$
>>> class_basecomponent.as:260
>>> #4   this = [Object 28590241,
>>>
>>> class='$lzc$class_multistatebutton'].$lzc 
>>> $class_basebutton(parent=[Object
>>> 28616785, class='$lzc$class_checkbox'], attrs=[Object 28686545,
>>> class='Object'], children=null, async=true) at $lzc$
>>> class_basebutton.as:153
>>> #5   this = [Object 28590241,
>>>
>>> class='$lzc$class_multistatebutton'].$lzc 
>>> $class_multistatebutton(parent=[Object
>>> 28616785, class='$lzc$class_checkbox'], attrs=[Object 28686545,
>>> class='Object'], children=null, async=true) at $lzc$
>>> class_multistatebutton.as:67
>>> #6   this = [Object 28616785,
>>> class='$lzc$class_checkbox'].LzNode/makeChild(e=[Object 28686585,
>>> class='Object'], async=true) at LzNode.as:393
>>> #7   this = [Object 28148545,
>>>
>>> class='LzInstantiatorClass'].LzInstantiatorClass/ 
>>> makeSomeViews(cq=[Object
>>> 28178297, class='Array'], otime=500 (0x1f4)) at
>>> LzInstantiatorClass.as:106
>>> #8   this = [Object 28148545,
>>> class='LzInstantiatorClass'].LzInstantiatorClass/ 
>>> checkQ(ignoreme=2060
>>> (0x80c)) at LzInstantiatorClass.as:79
>>> #9   this = [Object 28558689, class='LzEvent'].LzEvent/ 
>>> sendEvent(sd=2060
>>> (0x80c)) at LzEvent.as:50
>>> #10  this = [Object 27856001,
>>> class='LzApplication'].LFCApplication/__idleupdate(etime=2060  
>>> (0x80c))
>>> at
>>> LFCApplication.as:179
>>> #11  this = [Object 28541857,
>>> class='LzIdleKernel$'].LzIdleKernel$/__update() at LzIdleKernel.as: 
>>> 26
>>>
>>> (fdb)
>>>
>>>
>>>
>>>
>>> --
>>> Henry Minsky
>>> Software Architect
>>> hminsky at laszlosystems.com
>>>
>>
>>
>
>
> -- 
> Henry Minsky
> Software Architect
> hminsky at laszlosystems.com



More information about the Laszlo-dev mailing list