1 package Moose::Meta::Method::Accessor::Native::Array::set;
8 with 'Moose::Meta::Method::Accessor::Native::Array::Writer' => {
13 _inline_check_arguments
14 _inline_coerce_new_values
16 _inline_optimized_set_new_value
22 sub _minimum_arguments { 2 }
24 sub _maximum_arguments { 2 }
26 sub _inline_check_arguments {
29 return $self->_inline_check_var_is_valid_index('$_[0]');
32 sub _adds_members { 1 }
34 sub _potential_value {
36 my ($slot_access) = @_;
39 . 'my @potential = @{ (' . $slot_access . ') }; '
40 . '$potential[$_[0]] = $_[1]; '
45 # We need to override this because while @_ can be written to, we cannot write
47 sub _inline_coerce_new_values {
50 return unless $self->associated_attribute->should_coerce;
52 return unless $self->_tc_member_type_can_coerce;
54 return '@_ = ($_[0], $member_tc_obj->coerce($_[1]));';
57 sub _new_members { '$_[1]' }
59 sub _inline_optimized_set_new_value {
61 my ($inv, $new, $slot_access) = @_;
63 return $slot_access . '->[$_[0]] = $_[1];';
68 my ($slot_access) = @_;
70 return $slot_access . '->[$_[0]]';