Dan,

Can you provide a complete and runnable example? It would make it easier to test/debug.

Thanks,

- Stevan

On Jul 16, 2008, at 12:33 PM, Dan Harbin wrote:

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' }



Reply via email to