use strict;
use warnings;
use Moose::Util qw/find_meta/;
use Moose::Meta::Class;
use MooseX::MethodAttributes ();
use Test::More tests => 7;
{
package My::Role;
use Moose::Role -traits => 'MethodAttributes';
sub foo : Bar {}
}
{
package My::SuperClass;
use Moose;
sub bar {}
}
my $meta = Moose::Meta::Class->create_anon_class(
superclasses => ['My::SuperClass'],
roles => ['My::Role'],
cache => 1
);
# FIXME - Note special move here, required
# as you get the original metaclass
# back, not the one with the roles
# appled.
my $other_meta = find_meta($meta->name);
ok $other_meta;
my $classname = $other_meta->name;
isa_ok $classname->new, 'My::SuperClass';
isa_ok $classname->new, 'Moose::Object';
ok $classname->can('foo');
ok $classname->can('new');
ok $classname->can('bar');
my $attr = $other_meta->get_method_attributes( $classname->can('foo') );
is_deeply $attr, ['Bar'];