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
[EMAIL PROTECTED]