use CMOP::class_of instead of CMOP::Class->initialize
Dave Rolsky [Fri, 22 May 2009 03:52:46 +0000 (22:52 -0500)]
lib/MooseX/ClassAttribute.pm
lib/MooseX/ClassAttribute/Role/Meta/Class.pm

index c2f37c5..06580ac 100644 (file)
@@ -36,8 +36,7 @@ sub class_has
 
     my $attrs = ref $name eq 'ARRAY' ? $name : [$name];
 
-    Class::MOP::Class
-        ->initialize($caller)
+    Class::MOP::class_of($caller)
         ->add_class_attribute( $_, %options )
             for @{ $attrs };
 }
index 1afe8c7..eb798a3 100644 (file)
@@ -144,8 +144,8 @@ sub get_all_class_attributes
     my $self = shift;
 
     my %attrs =
-        map { my $meta = Class::MOP::Class->initialize($_);
-              $meta->can('get_class_attribute_map')
+        map { my $meta = Class::MOP::class_of($_);
+              $meta && $meta->can('get_class_attribute_map')
               ? %{ $meta->get_class_attribute_map() }
               : ()
             }
@@ -169,7 +169,8 @@ sub find_class_attribute_by_name
 
     foreach my $class ( $self->linearized_isa() )
     {
-        my $meta = Class::MOP::Class->initialize($class);
+        my $meta = Class::MOP::class_of($class)
+            or next;
 
         return $meta->get_class_attribute($name)
             if $meta->can('has_class_attribute') && $meta->has_class_attribute($name);