1 package Moose::Meta::Method::Accessor::Native::Array::insert;
6 our $AUTHORITY = 'cpan:STEVAN';
10 with 'Moose::Meta::Method::Accessor::Native::Array::Writer' => {
15 _inline_coerce_new_values
17 _inline_optimized_set_new_value
23 sub _minimum_arguments { 2 }
25 sub _maximum_arguments { 2 }
27 sub _adds_members { 1 }
29 sub _potential_value {
31 my ($slot_access) = @_;
34 . 'my @potential = @{ (' . $slot_access . ') }; '
35 . 'splice @potential, $_[0], 0, $_[1]; '
40 # We need to override this because while @_ can be written to, we cannot write
42 sub _inline_coerce_new_values {
45 return unless $self->associated_attribute->should_coerce;
47 return unless $self->_tc_member_type_can_coerce;
49 return '@_ = ($_[0], $member_tc_obj->coerce($_[1]));';
52 sub _new_members { '$_[1]' }
54 sub _inline_optimized_set_new_value {
56 my ($inv, $new, $slot_access) = @_;
58 return 'splice @{ (' . $slot_access . ') }, $_[0], 0, $_[1];';
63 my ($slot_access) = @_;
65 return $slot_access . '->[ $_[0] ]';