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 = $self->_value_needs_copy
25 $code .= "\n" . $self->_inline_pre_body(@_);
27 $code .= "\n" . 'my $self = shift;';
29 $code .= "\n" . $self->_inline_check_lazy($inv);
31 $code .= "\n" . $self->_inline_copy_value;
35 . $self->_inline_throw_error(
36 q{"Cannot call push without any arguments"})
37 . " unless $value_name;";
39 my $potential_new_val;
40 if ( $self->_constraint_must_be_checked ) {
41 $code .= "\n" . "my \@new_val = ( \@{ $slot_access }, $value_name );";
42 $potential_new_val = '\\@new_val';
45 $potential_new_val = "[ \@{ $slot_access }, $value_name ];";
48 $code .= "\n" . $self->_inline_check_coercion($potential_new_val);
49 $code .= "\n" . $self->_inline_check_constraint($potential_new_val);
52 . $self->_inline_get_old_value_for_trigger( $inv, $value_name );
54 $code .= "\n" . $self->_inline_store( $inv, $potential_new_val );
56 $code .= "\n" . $self->_inline_post_body(@_);
57 $code .= "\n" . $self->_inline_trigger( $inv, $value_name, '@old' );