[Laszlo-user] proposal for new behavior of compiler when declaring child nodes with same name as attributes

P T Withington ptw at pobox.com
Mon Jun 2 05:38:38 PDT 2008


I think this is a good proposal, since it should actually be pretty  
rare that you want to declare an attribute that ends up being one of  
your child nodes.

On 2008-05-28, at 13:24 EDT, Henry Minsky wrote:

> Sorry my message got cut off before I could finish it:
>
> This is a proposal in response to this bug, which came up when  
> someone named
> a child view "layout", and got
> unexpected results in a view.
>
> http://jira.openlaszlo.org/jira/browse/LPP-5799
>
> The current compiler behavior is that it will allow you to declare a  
> child
> with the same name as an attribute,
> as long as the attribute has a null default value. This unfortunately
> applies to virtually every attribute
> declared in the schema, so in practice you can easily shadow all  
> sorts of
> important properties in
> a view or node, by naming a child view with the same name as a class
> attribute, with no warning from the compiler.
>
> This proposal is that we add a new LZX attribute type, "node", which  
> you can
> use to declare that
> an attribute name can have the same name as child node.
>
> So for example you could have
>
> <class name="myclass">
>   <attribute name="titleview" type="node"/>
>
>   <handler name="oninit">
>       this.titleview.setAttribute('bgcolor', 0xcccccc);
>   </handler>
> </class>
>
> Then elsewhere you could say
>
>  <myclass>
>     <view name="titleview">
>       ....
>    </myclass>
>
> And the compiler would not complain.
>
> The existing compiler  behavior would be changed so that for any  
> attribute
> type
> except "node",  if you name a child node
> with the same name as that  attribute, you get a compiler warning,
> regardless of
> whether the attribute was declared with a default value.
>
>
>
> Henry Minsky
> Software Architect
> hminsky at laszlosystems.com



More information about the Laszlo-user mailing list