X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FClass.pm;h=85066c7b2f81b60cdda03ebc8c1763a60e622cbc;hb=2669196e30954006103bfb6a88f60457ebf2691c;hp=4f811d96b93b29bbea1e6bb5c80036cc0c6e5c78;hpb=8d40c3b80e6e4cebdf951d289d6b5d33b7641338;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Meta/Class.pm b/lib/Mouse/Meta/Class.pm index 4f811d9..85066c7 100644 --- a/lib/Mouse/Meta/Class.pm +++ b/lib/Mouse/Meta/Class.pm @@ -27,7 +27,7 @@ sub _construct_meta { my $self = bless \%args, ref($class) || $class; if($class ne __PACKAGE__){ - $self->_initialize_object($self, \%args); + $self->meta->_initialize_object($self, \%args); } return $self; } @@ -117,7 +117,7 @@ sub add_attribute { my($attribute_class, @traits) = Mouse::Meta::Attribute->interpolate_class($name, \%args); $args{traits} = \@traits if @traits; - $attr = $attribute_class->new($name, \%args); + $attr = $attribute_class->new($name, %args); } } @@ -248,17 +248,20 @@ sub make_immutable { my %args = ( inline_constructor => 1, inline_destructor => 1, + constructor_name => 'new', @_, ); $self->{is_immutable}++; if ($args{inline_constructor}) { - $self->add_method('new' => Mouse::Meta::Method::Constructor->generate_constructor_method_inline( $self )); + # generate and install + Mouse::Meta::Method::Constructor->_generate_constructor_method($self, \%args); } if ($args{inline_destructor}) { - $self->add_method('DESTROY' => Mouse::Meta::Method::Destructor->generate_destructor_method_inline( $self )); + # generate and install + Mouse::Meta::Method::Destructor->_generate_destructor_method($self, \%args); } # Moose's make_immutable returns true allowing calling code to skip setting an explicit true value