always call DEMOLISHALL, so that method modifiers work properly on it
Jesse Luehrs [Sat, 14 Feb 2009 01:22:10 +0000 (01:22 +0000)]
lib/Moose/Object.pm

index 2c84d95..9b0817a 100644 (file)
@@ -49,16 +49,16 @@ sub BUILDALL {
 
 sub DEMOLISHALL {
     my $self = shift;    
+    # NOTE: we ask Perl if we even 
+    # need to do this first, to avoid
+    # extra meta level calls    
+    return unless $self->can('DEMOLISH');
     foreach my $method ($self->meta->find_all_methods_by_name('DEMOLISH')) {
         $method->{code}->execute($self);
     }
 }
 
 sub DESTROY { 
-    # NOTE: we ask Perl if we even 
-    # need to do this first, to avoid
-    # extra meta level calls    
-    return unless $_[0]->can('DEMOLISH');
     # if we have an exception here ...
     if ($@) {
         # localize the $@ ...