This still doesn't seem to work. Maybe it only works by extending the attribute metaclass rather than applying a role like I'm trying.
Here's the code. Help! ----------------------- package Demo::Meta::Attribute::Trait::Foo; use Moose::Role; has foo => ( is => 'rw', isa => 'Str', required => 1, ); around 'legal_options_for_inheritance' => sub { my @options = inner(); push @options, 'foo'; return @options; }; package Moose::Meta::Attribute::Custom::Trait::Foo; sub register_implementation { 'Demo::Meta::Attribute::Trait::Foo' } On Wed, Jul 16, 2008 at 10:35 AM, Stevan Little <[EMAIL PROTECTED]> wrote: > Dan, > > Roles don't inherit, so you want 'around' instead of 'override' sorry, my > fault i used a term that is also a keyword :) > > - Stevan > > On Jul 16, 2008, at 11:16 AM, Dan Harbin wrote: > >> Stevan, >> >> I changed the code as follows, and it still fails. This trait >> doesn't/can't inherit from Moose::Meta::Attribute, so I think the >> override method is a no-op. How do I fix this? >> >> Dan >> >> ----------------- >> >> package Demo::Meta::Attribute::Trait::Foo; >> use Moose::Role; >> >> has foo => ( >> is => 'rw', >> isa => 'Str', >> required => 1, >> ); >> >> override 'legal_options_for_inheritance' => sub { >> my @options = super(); >> push @options, 'foo'; >> return @options; >> }; >> >> package Moose::Meta::Attribute::Custom::Trait::Foo; >> sub register_implementation { 'Demo::Meta::Attribute::Trait::Foo' } > >