[Laszlo-dev] Serious rot in hand-coded dependency functions

P T Withington ptw at pobox.com
Wed Feb 20 05:01:56 PST 2008


I'm looking around at the hand-coded dependency functions and they all  
seem to think that they are going to be called with parameters: `who`,  
`self`, and the parameters of the method they are the dependency  
function for.  But for centuries, the callers of `applyConstraint`  
have been invoking dependency functions with no parameters (other than  
the implicit `this` parameter, which is the LzNode whose attribute is  
being constrained).  E.g.:

> /**
>   * Returns the value for the give attribute
>   * @param String name: The name of the attribute whose value to  
> return
>   * @return String: The value for the given attribute
>   */
> function getAttr (name){
>     if (this.attributes) return this.attributes[ name ];
> }
>
> /**
>   * @access private
>   */
> prototype.getAttr.dependencies = function (who , self){
>     return [ self, 'attributes' ];
> }

It's pretty clear that getAttr.dependencies should be returning  
`[this, 'attributes']`.  There are more:

> /** @access private */
> xpathQuery.dependencies = function ( who , self , p ){
>     if (this.parsePath) {
>         var pp  = this.parsePath( p );
>         return [ pp.hasDotDot ?  
> self.context.getContext().ownerDocument : self ,
>                  "DocumentChange" ];
>     } else {
>         return [  self , "DocumentChange" ];
>     }
> }

This is clearly never going to work, since `p` is never going to be  
passed.

---

Seems to me that the contract of a dependency function changed a while  
back, and no one ever got around to updating all these hand-made  
ones.  A lot of them still have the vestigial `who, self` parameters,  
but their bodies have been re-written to refer to `this`.  Others have  
a comment saying they need to be re-written.  Still others are just  
plain broken.

Anyone know what is going on here?  I plan to file a bug to get these  
either fixed or removed.
  
  


More information about the Laszlo-dev mailing list