1 package Moose::Meta::Method::Accessor::Native::Array::push;
7 $VERSION = eval $VERSION;
8 our $AUTHORITY = 'cpan:STEVAN';
10 use base 'Moose::Meta::Method::Accessor::Native::Array::Writer';
12 sub _generate_method {
17 my $slot_access = $self->_inline_get($inv);
20 $code .= "\n" . $self->_inline_pre_body(@_);
22 $code .= "\n" . 'my $self = shift;';
24 $code .= "\n" . $self->_inline_check_lazy($inv);
26 $code .= "\n" . $self->_inline_curried_arguments;
30 . $self->_inline_throw_error(
31 q{"Cannot call push without any arguments"})
34 my $potential_new_val;
35 if ( $self->_constraint_must_be_checked ) {
36 $code .= "\n" . "my \@new_val = ( \@{ $slot_access }, \@_ );";
37 $potential_new_val = '\\@new_val';
40 $potential_new_val = "[ \@{ $slot_access }, \@_ ];";
43 $code .= "\n" . $self->_inline_check_coercion($potential_new_val);
44 $code .= "\n" . $self->_inline_check_constraint($potential_new_val);
46 $code .= "\n" . $self->_inline_get_old_value_for_trigger( $inv, '@_' );
48 $code .= "\n" . $self->_inline_store( $inv, $potential_new_val );
50 $code .= "\n" . $self->_inline_post_body(@_);
51 $code .= "\n" . $self->_inline_trigger( $inv, '@_', '@old' );