We throw fine error messages when trying to get a role metaclass
Shawn M Moore [Sat, 28 Mar 2009 20:20:10 +0000 (16:20 -0400)]
lib/Moose/Meta/Attribute.pm

index 73b6047..96dc22b 100644 (file)
@@ -623,13 +623,10 @@ sub _canonicalize_handles {
         Class::MOP::load_class($handles) 
             unless Class::MOP::is_class_loaded($handles);
             
-        my $role_meta = eval { $handles->meta };
-        if ($@) {
-            $self->throw_error("Unable to canonicalize the 'handles' option with $handles because : $@", data => $handles, error => $@);
-        }
+        my $role_meta = Class::MOP::class_of($handles);
 
         (blessed $role_meta && $role_meta->isa('Moose::Meta::Role'))
-            || $self->throw_error("Unable to canonicalize the 'handles' option with $handles because ->meta is not a Moose::Meta::Role", data => $handles);
+            || $self->throw_error("Unable to canonicalize the 'handles' option with $handles because its metaclass is not a Moose::Meta::Role", data => $handles);
             
         return map { $_ => $_ } (
             $role_meta->get_method_list,