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...