Fix meta method constructors
gfx [Sat, 28 Nov 2009 01:20:25 +0000 (10:20 +0900)]
lib/Mouse/Meta/Method.pm
lib/Mouse/Meta/Role/Method.pm

index dab9592..9ba243e 100755 (executable)
@@ -13,11 +13,13 @@ sub wrap{
 }
 
 sub _new{
-    my $class = shift;
-    return $class->meta->new_object(@_)
-        if $class ne __PACKAGE__;
+    my($class, %args) = @_;
+    my $self = bless \%args, $class;
 
-    return bless {@_}, $class;
+    if($class ne __PACKAGE__){
+        $self->meta->_initialize_object($self, \%args);
+    }
+    return $self;
 }
 
 sub body                 { $_[0]->{body}    }
index 126bf50..02cff34 100755 (executable)
@@ -4,11 +4,14 @@ use Mouse::Util; # enables strict and warnings
 use Mouse::Meta::Method;
 our @ISA = qw(Mouse::Meta::Method);
 
-sub _new {
-    my $class = shift;
-    return $class->meta->new_object(@_)
-        if $class ne __PACKAGE__;
-    return bless {@_}, $class;
+sub _new{
+    my($class, %args) = @_;
+    my $self = bless \%args, $class;
+
+    if($class ne __PACKAGE__){
+        $self->meta->_initialize_object($self, \%args);
+    }
+    return $self;
 }
 
 1;