I'd rather see it as has '-XXX' to override, has '+XXX' to augment, and has 
'XXX' to create a new attribute, with an error if an unsigned creation had a 
conflict.

That provides the feature when it is desired without providing an action ata 
distance bug when it is unexpected.

John Macdonald
Software Engineer

Ontario Institute for Cancer Research
MaRS Centre

661 University Avenue

Suite 510
Toronto, Ontario

Canada M5G 0A3


Tel:

Email: john.macdon...@oicr.on.ca

Toll-free: 1-866-678-6427
Twitter: @OICR_news


www.oicr.on.ca

This message and any attachments may contain confidential and/or privileged 
information for the sole use of the intended recipient. Any review or 
distribution by anyone other than the person for whom it was originally 
intended is strictly prohibited. If you have received this message in error, 
please contact the sender and delete all copies. Opinions, conclusions or other 
information contained in this message may not be that of the organization.

________________________________________
From: Karen Etheridge [p...@froods.org]
Sent: October 4, 2014 2:47 PM
To: moose@perl.org
Subject: Re: overlapping attributes not detected

On Fri, Oct 03, 2014 at 09:28:22PM +0000, John Macdonald wrote:
> If you have a role and its consumer both specify the same attribute name 
> (neither one using +name) there is no complaint from Moose and the second one 
> encountered is used and the first is ignored.
> I tracked this down after getting an error that the predicate method was not 
> found - that was defined in the version of the attribute that was discarded 
> without notice.
> Could there be something done in the 'has' handler to detect such duplicates 
> and give an error rather than this sort of quiet misaction?

This is actually a feature. Roles and subclasses should be able to
completely override an earlier attribute declaration.  There are, of
course, opportunities to make this more clear in documentation...

Reply via email to