Don't call meta instance related methods unconditionally in HasAttributes.
[gitmo/Class-MOP.git] / lib / Class / MOP / HasAttributes.pm
index 45c6021..f106e6b 100644 (file)
@@ -40,7 +40,8 @@ sub add_attribute {
         $self->remove_attribute($attr_name);
     }
     else {
-        $self->invalidate_meta_instances();
+        $self->invalidate_meta_instances()
+            if $self->can('invalidate_meta_instances');
     }
 
     # get our count of previously inserted attributes and
@@ -92,7 +93,8 @@ sub remove_attribute {
     return unless defined $removed_attribute;
 
     delete $self->_attribute_map->{$attribute_name};
-    $self->invalidate_meta_instances();
+    $self->invalidate_meta_instances()
+        if $self->can('invalidate_meta_instances');
     $removed_attribute->remove_accessors();
     $removed_attribute->detach_from_class();
 
@@ -104,13 +106,6 @@ sub get_attribute_list {
     keys %{ $self->_attribute_map };
 }
 
-sub get_all_attributes {
-    my $self = shift;
-    my %attrs = map { %{ $self->initialize($_)->_attribute_map } }
-        reverse $self->linearized_isa;
-    return values %attrs;
-}
-
 sub find_attribute_by_name {
     my ( $self, $attr_name ) = @_;