X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FClass%2FMOP.pm;h=46a7e2c7ace9737ad75177c3c807d44d85e46121;hb=71b98d4fae80b55fd5b03142fae05b625b03d328;hp=c56f63d0d97a9741daec2de9f52a4649fa76bd65;hpb=6f49cf3f931045bfa9a03785a1aea6caef52ace0;p=gitmo%2FClass-MOP.git diff --git a/lib/Class/MOP.pm b/lib/Class/MOP.pm index c56f63d..46a7e2c 100644 --- a/lib/Class/MOP.pm +++ b/lib/Class/MOP.pm @@ -516,25 +516,6 @@ Class::MOP::Method->meta->add_attribute( )) ); -# FIMXE prime candidate for immutablization -Class::MOP::Method->meta->add_method('wrap' => sub { - my ( $class, @args ) = @_; - - unshift @args, 'body' if @args % 2 == 1; - - my %options = @args; - my $code = $options{body}; - - ('CODE' eq ref($code)) - || confess "You must supply a CODE reference to bless, not (" . ($code || 'undef') . ")"; - - ($options{package_name} && $options{name}) - || confess "You must supply the package_name and name parameters"; - - # return the new object - $class->meta->new_object(%options); -}); - Class::MOP::Method->meta->add_method('clone' => sub { my $self = shift; $self->meta->clone_object($self, @_); @@ -733,8 +714,13 @@ undef Class::MOP::Instance->meta->{_package_cache_flag}; # no actual benefits. $_->meta->make_immutable( - inline_constructor => 0, - inline_accessors => 0, + ( $_->can("_new") ? ( + inline_constructor => 1, + constructor_name => "_new", + ) : ( + inline_constructor => 0, + ) ), + inline_accessors => 0, ) for qw/ Class::MOP::Package Class::MOP::Module