Meta::Class->does_role searches isa for Moose compatibility
NAKAGAWA Masaki [Mon, 16 Mar 2009 09:41:06 +0000 (18:41 +0900)]
lib/Mouse/Meta/Class.pm

index 0e410a3..9e6ef57 100644 (file)
@@ -295,8 +295,11 @@ sub does_role {
     (defined $role_name)
         || confess "You must supply a role name to look for";
 
-    for my $role (@{ $self->{roles} }) {
-        return 1 if $role->name eq $role_name;
+    for my $class ($self->linearized_isa) {
+        next unless $class->can('meta') and $class->meta->can('roles');
+        for my $role (@{ $self->roles }) {
+            return 1 if $role->name eq $role_name;
+        }
     }
 
     return 0;