use overload ();
use Class::MOP;
-our $AUTHORITY = 'cpan:STEVAN';
-
my @exports = qw[
find_meta
does_role
Moose->throw_error("Must specify at least one role to apply to $applicant");
}
- my $roles = Data::OptList::mkopt( [@_] );
+ # If @_ contains role meta objects, mkopt will think that they're values,
+ # because they're references. In other words (roleobj1, roleobj2,
+ # roleobj3) will become [ [ roleobj1, roleobj2 ], [ roleobj3, undef ] ]
+ # -- this is no good. We'll preprocess @_ first to eliminate the potential
+ # bug.
+ # -- rjbs, 2011-04-08
+ my $roles = Data::OptList::mkopt( [@_], {
+ moniker => 'role',
+ name_test => sub {
+ ! ref $_[0] or blessed($_[0]) && $_[0]->isa('Moose::Meta::Role')
+ }
+ });
my @role_metas;
foreach my $role (@$roles) {
# handle the case where we need to fix compatibility between a class and
# its parent, but all roles in the class are already also done by the
# parent
- # see t/050/054.t
+ # see t/metaclasses/metaclass_compat_no_fixing_bug.t
return $super_meta_name
unless @role_differences;