Use Class::MOP::get_meta($thing) instead of $thing->meta
[gitmo/Moose.git] / lib / Moose / Meta / Role.pm
index ed00b37..23b1526 100644 (file)
@@ -321,19 +321,10 @@ sub get_method_map {
                         $map->{$symbol}->body == $code;
 
         my ($pkg, $name) = Class::MOP::get_code_info($code);
+        my $meta = Class::MOP::get_meta($pkg);
 
-        if ($pkg->can('meta')
-            # NOTE:
-            # we don't know what ->meta we are calling
-            # here, so we need to be careful cause it
-            # just might blow up at us, or just complain
-            # loudly (in the case of Curses.pm) so we
-            # just be a little overly cautious here.
-            # - SL
-            && eval { no warnings; blessed($pkg->meta) } # FIXME calls meta
-            && $pkg->meta->isa('Moose::Meta::Role')) {
-            my $role = $pkg->meta->name;
-            next unless $self->does_role($role);
+        if ($meta && $meta->isa('Moose::Meta::Role')) {
+            next unless $self->does_role($meta->name);
         }
         else {
             # NOTE:
@@ -462,7 +453,7 @@ sub combine {
     my (@roles, %role_params);
     while (@role_specs) {
         my ($role, $params) = @{ splice @role_specs, 0, 1 };
-        push @roles => $role->meta;
+        push @roles => Class::MOP::get_meta($role);
         next unless defined $params;
         $role_params{$role} = $params; 
     }