1 package Moose::Meta::Method::Accessor::Native::Array::insert;
7 $VERSION = eval $VERSION;
8 our $AUTHORITY = 'cpan:STEVAN';
12 with 'Moose::Meta::Method::Accessor::Native::Array::Writer' => {
17 _inline_coerce_new_values
19 _inline_optimized_set_new_value
25 sub _minimum_arguments { 2 }
27 sub _maximum_arguments { 2 }
29 sub _adds_members { 1 }
31 sub _potential_value {
33 my ($slot_access) = @_;
36 . 'my @potential = @{ (' . $slot_access . ') }; '
37 . 'splice @potential, $_[0], 0, $_[1]; '
42 # We need to override this because while @_ can be written to, we cannot write
44 sub _inline_coerce_new_values {
47 return unless $self->associated_attribute->should_coerce;
49 return unless $self->_tc_member_type_can_coerce;
51 return '@_ = ($_[0], $member_tc_obj->coerce($_[1]));';
54 sub _new_members { '$_[1]' }
56 sub _inline_optimized_set_new_value {
58 my ($inv, $new, $slot_access) = @_;
60 return 'splice @{ (' . $slot_access . ') }, $_[0], 0, $_[1];';
65 my ($slot_access) = @_;
67 return $slot_access . '->[ $_[0] ]';