Tweak doc changes for role_type & class_type
[gitmo/Moose.git] / lib / Moose / Util.pm
index c62701d..63a4da5 100644 (file)
@@ -10,6 +10,7 @@ use Scalar::Util 'blessed';
 use List::Util qw(first);
 use List::MoreUtils qw(any all);
 use overload ();
+use Try::Tiny;
 use Class::MOP;
 
 my @exports = qw[
@@ -43,6 +44,10 @@ sub find_meta { Class::MOP::class_of(@_) }
 sub does_role {
     my ($class_or_obj, $role) = @_;
 
+    if (try { $class_or_obj->isa('Moose::Object') }) {
+        return $class_or_obj->does($role);
+    }
+
     my $meta = find_meta($class_or_obj);
 
     return unless defined $meta;
@@ -137,6 +142,10 @@ sub _apply_all_roles {
 
     return unless @role_metas;
 
+    Class::MOP::load_class($applicant)
+        unless blessed($applicant)
+            || Class::MOP::class_of($applicant);
+
     my $meta = ( blessed $applicant ? $applicant : Moose::Meta::Class->initialize($applicant) );
 
     if ( scalar @role_metas == 1 ) {