This commit is contained in:
64
CPAN/Moose/Meta/Method/Accessor/Native/Array/set.pm
Normal file
64
CPAN/Moose/Meta/Method/Accessor/Native/Array/set.pm
Normal file
@@ -0,0 +1,64 @@
|
||||
package Moose::Meta::Method::Accessor::Native::Array::set;
|
||||
our $VERSION = '2.2207';
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Moose::Role;
|
||||
|
||||
with 'Moose::Meta::Method::Accessor::Native::Array::Writer';
|
||||
|
||||
sub _minimum_arguments { 2 }
|
||||
|
||||
sub _maximum_arguments { 2 }
|
||||
|
||||
sub _inline_check_arguments {
|
||||
my $self = shift;
|
||||
|
||||
return $self->_inline_check_var_is_valid_index('$_[0]');
|
||||
}
|
||||
|
||||
sub _adds_members { 1 }
|
||||
|
||||
sub _potential_value {
|
||||
my $self = shift;
|
||||
my ($slot_access) = @_;
|
||||
|
||||
return '(do { '
|
||||
. 'my @potential = @{ (' . $slot_access . ') }; '
|
||||
. '$potential[$_[0]] = $_[1]; '
|
||||
. '\@potential; '
|
||||
. '})';
|
||||
}
|
||||
|
||||
# We need to override this because while @_ can be written to, we cannot write
|
||||
# directly to $_[1].
|
||||
sub _inline_coerce_new_values {
|
||||
my $self = shift;
|
||||
|
||||
return unless $self->associated_attribute->should_coerce;
|
||||
|
||||
return unless $self->_tc_member_type_can_coerce;
|
||||
|
||||
return '@_ = ($_[0], $member_coercion->($_[1]));';
|
||||
};
|
||||
|
||||
sub _new_members { '$_[1]' }
|
||||
|
||||
sub _inline_optimized_set_new_value {
|
||||
my $self = shift;
|
||||
my ($inv, $new, $slot_access) = @_;
|
||||
|
||||
return $slot_access . '->[$_[0]] = $_[1];';
|
||||
}
|
||||
|
||||
sub _return_value {
|
||||
my $self = shift;
|
||||
my ($slot_access) = @_;
|
||||
|
||||
return $slot_access . '->[$_[0]]';
|
||||
}
|
||||
|
||||
no Moose::Role;
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user