make MMM::Destructor->is_needed a class method only
Dave Rolsky [Sat, 21 Mar 2009 15:16:19 +0000 (10:16 -0500)]
Changes
lib/Moose/Meta/Method/Destructor.pm

diff --git a/Changes b/Changes
index c0c051c..beade47 100644 (file)
--- a/Changes
+++ b/Changes
@@ -45,6 +45,9 @@ Revision history for Perl extension Moose
       - The long-deprecated intialize_body method has been removed
         (yes, spelled like that).
 
+    * Moose::Meta::Method::Destructor
+      - This is_needed method is now always a class method.
+
 0.72 Mon, February 23, 2009
     * Moose::Object
     * Moose::Meta::Method::Constructor
index 2be0b2d..d8f21a2 100644 (file)
@@ -50,16 +50,15 @@ sub associated_metaclass { (shift)->{'associated_metaclass'} }
 
 ## method
 
-sub is_needed { 
-    my $self = shift;
-    # if called as a class method
-    # then must pass in a class name
-    unless (blessed $self) {
-        (blessed $_[0] && $_[0]->isa('Class::MOP::Class')) 
-            || $self->throw_error("When calling is_needed as a class method you must pass a class name");
-        return $_[0]->meta->can('DEMOLISH');
-    }
-    defined $self->{'body'} ? 1 : 0 
+sub is_needed {
+    my $self      = shift;
+    my $metaclass = shift;
+
+    ( blessed $metaclass && $metaclass->isa('Class::MOP::Class') )
+        || $self->throw_error(
+        "The is_needed method expected a metaclass object as its arugment");
+
+    return $metaclass->meta->can('DEMOLISH');
 }
 
 sub initialize_body {