bump version to 0.65 and update changes for stable release
[gitmo/Class-MOP.git] / lib / Class / MOP / Method.pm
index 8a2dc88..fb90eda 100644 (file)
@@ -8,6 +8,7 @@ use Carp         'confess';
 use Scalar::Util 'weaken';
 
 our $VERSION   = '0.65';
+$VERSION = eval $VERSION;
 our $AUTHORITY = 'cpan:STEVAN';
 
 use base 'Class::MOP::Object';
@@ -42,18 +43,25 @@ sub wrap {
     ($params{package_name} && $params{name})
         || confess "You must supply the package_name and name parameters $UPGRADE_ERROR_TEXT";
 
-    my $self = bless {
-        'body'                 => $code,
-        'associated_metaclass' => $params{associated_metaclass},
-        'package_name'         => $params{package_name},
-        'name'                 => $params{name},
-    } => ref($class) || $class;
+    my $self = (ref($class) || $class)->_new(\%params);
 
     weaken($self->{associated_metaclass}) if $self->{associated_metaclass};
 
     return $self;
 }
 
+sub _new {
+    my $class = shift;
+    my $params = @_ == 1 ? $_[0] : {@_};
+
+    my $self = bless {
+        'body'                 => $params->{body},
+        'associated_metaclass' => $params->{associated_metaclass},
+        'package_name'         => $params->{package_name},
+        'name'                 => $params->{name},
+    } => $class;
+}
+
 ## accessors
 
 sub body { (shift)->{'body'} }
@@ -71,15 +79,9 @@ sub detach_from_class {
     delete $self->{associated_metaclass};
 }
 
-sub package_name {
-    my $self = shift;
-    $self->{'package_name'} ||= (Class::MOP::get_code_info($self->body))[0];
-}
+sub package_name { (shift)->{'package_name'} }
 
-sub name {
-    my $self = shift;
-    $self->{'name'} ||= (Class::MOP::get_code_info($self->body))[1];
-}
+sub name { (shift)->{'name'} }
 
 sub fully_qualified_name {
     my $code = shift;