Checking in changes prior to tagging of version 0.40_03. Changelog diff is:
[gitmo/Mouse.git] / lib / Mouse / Meta / Method.pm
index 458dbbb..404d30d 100755 (executable)
@@ -2,19 +2,28 @@ package Mouse::Meta::Method;
 use Mouse::Util qw(:meta); # enables strict and warnings
 
 use overload
-    '&{}' => 'body',
+    '&{}' => sub{ $_[0]->body },
     fallback => 1,
 ;
 
-sub new{
-    my($class, %args) = @_;
+sub wrap{
+    my $class = shift;
 
-    return bless \%args, $class;
+    return $class->_new(@_);
 }
 
-sub body        { $_[0]->{body}    }
-sub name        { $_[0]->{name}    }
-sub package_name{ $_[0]->{package} }
+sub _new{
+    my $class = shift;
+    return $class->meta->new_object(@_)
+        if $class ne __PACKAGE__;
+
+    return bless {@_}, $class;
+}
+
+sub body                 { $_[0]->{body}    }
+sub name                 { $_[0]->{name}    }
+sub package_name         { $_[0]->{package} }
+sub associated_metaclass { $_[0]->{associated_metaclass} }
 
 sub fully_qualified_name {
     my $self = shift;
@@ -22,7 +31,6 @@ sub fully_qualified_name {
 }
 
 1;
-
 __END__
 
 =head1 NAME
@@ -31,7 +39,7 @@ Mouse::Meta::Method - A Mouse Method metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.40
+This document describes Mouse version 0.40_03
 
 =head1 SEE ALSO