I think currently DOES support is located in Moose::Object, seems like
a good idea to add support for it in the Meta Role too.
Patches welcome, would likely be a pretty simple one.
- Stevan
On Jan 6, 2011, at 1:20 AM, Ovid wrote:
My apologies if this has already been addressed, but should roles
respond to
"DOES"?
{
package Some::Role;
use Moose::Role;
}
{
package Some::Other::Role;
use Moose::Role;
with 'Some::Role';
}
{
package Some::Class;
use Moose;
with 'Some::Other::Role';
}
print Some::Class->DOES('Some::Role'); # good
print Some::Other::Role->DOES('Some::Role'); # bad
print Some::Role->DOES('Some::Role'); # bad
That prints out:
Can't locate object method "DOES" via package "Some::Other::Role"
at role.pl
line 18.
1
shell returned 255
The use case here is that when roles are composed from other roles,
I might want
to query a role directly as to whether or not it does a given role.
Further, I
was thinking that all roles should response true for $role-
>DOES($role).
I know I can write those as this:
print Some::Class->meta->does_role('Some::Role');
print Some::Other::Role->meta->does_role('Some::Role');
print Some::Role->meta->does_role('Some::Role');
But the inconsistency in ->DOES seems odd and I was wondering if
this is desired
behavior.
This is Moose 1.21.
Cheers,
Ovid--
Live and work overseas - http://overseas-exile.blogspot.com/
Buy the book - http://www.oreilly.com/catalog/perlhks/
Tech blog - http://blogs.perl.org/users/ovid/
Twitter - http://twitter.com/OvidPerl/