X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FMethod%2FAccessor%2FNative%2FArray%2Fpush.pm;h=c2b3125345da4b3d42fb174915ea0e697ba33b73;hb=a7821be5fbdedff67afce753d73c580ae5ada592;hp=bf7b3aaf97736fc9cbeafb51c09b9cb56d89bd9b;hpb=f7fd22b6d12dedd3c0666e30c05b2e02b3e8acb3;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/Method/Accessor/Native/Array/push.pm b/lib/Moose/Meta/Method/Accessor/Native/Array/push.pm index bf7b3aa..c2b3125 100644 --- a/lib/Moose/Meta/Method/Accessor/Native/Array/push.pm +++ b/lib/Moose/Meta/Method/Accessor/Native/Array/push.pm @@ -9,56 +9,12 @@ our $AUTHORITY = 'cpan:STEVAN'; use base 'Moose::Meta::Method::Accessor::Native::Array::Writer'; -sub _generate_method { - my $self = shift; +sub _adds_members { 1 } - my $inv = '$self'; +sub _potential_value { + my ( $self, $slot_access ) = @_; - my $slot_access = $self->_inline_get($inv); - - my $value_name - = $self->_value_needs_copy - ? '@val' - : '@_'; - - my $code = 'sub {'; - $code .= "\n" . $self->_inline_pre_body(@_); - - $code .= "\n" . 'my $self = shift;'; - - $code .= "\n" . $self->_inline_check_lazy($inv); - - $code .= "\n" . $self->_inline_copy_value; - - $code - .= "\n" - . $self->_inline_throw_error( - q{"Cannot call push without any arguments"}) - . " unless $value_name;"; - - my $potential_new_val; - if ( $self->_constraint_must_be_checked ) { - $code .= "\n" . "my \@new_val = ( \@{ $slot_access }, $value_name );"; - $potential_new_val = '\\@new_val'; - } - else { - $potential_new_val = "[ \@{ $slot_access }, $value_name ];"; - } - - $code .= "\n" . $self->_inline_check_coercion($potential_new_val); - $code .= "\n" . $self->_inline_check_constraint($potential_new_val); - - $code .= "\n" - . $self->_inline_get_old_value_for_trigger( $inv, $value_name ); - - $code .= "\n" . $self->_inline_store( $inv, $potential_new_val ); - - $code .= "\n" . $self->_inline_post_body(@_); - $code .= "\n" . $self->_inline_trigger( $inv, $value_name, '@old' ); - - $code .= "\n}"; - - return $code; + return "( \@{ $slot_access }, \@_ )"; } 1;