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

Henry Minsky hminsky at laszlosystems.com
Wed May 28 10:24:19 PDT 2008


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.openlaszlo.org/pipermail/laszlo-user/attachments/20080528/f4cf134a/attachment-0001.html


More information about the Laszlo-user mailing list