X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FMethod%2FAccessor%2FNative%2FArray%2Ffirst.pm;h=5d4482b027d7abfd5508ea971b310d1d1a93234a;hb=ec86bdff10923f63141e6529c2178189a64c71b8;hp=83f3e3df6c99b115440957467451df6ec4195fa5;hpb=10bd99ecf3f1706d4452fa57e3f08a63b9f92a11;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/Method/Accessor/Native/Array/first.pm b/lib/Moose/Meta/Method/Accessor/Native/Array/first.pm index 83f3e3d..5d4482b 100644 --- a/lib/Moose/Meta/Method/Accessor/Native/Array/first.pm +++ b/lib/Moose/Meta/Method/Accessor/Native/Array/first.pm @@ -4,12 +4,23 @@ use strict; use warnings; use List::Util (); +use Params::Util (); -our $VERSION = '1.14'; +our $VERSION = '1.19'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; -use base 'Moose::Meta::Method::Accessor::Native::Reader'; +use Moose::Role; + +with 'Moose::Meta::Method::Accessor::Native::Reader' => { + -excludes => [ + qw( + _minimum_arguments + _maximum_arguments + _inline_check_arguments + ) + ] +}; sub _minimum_arguments { 1 } @@ -18,16 +29,22 @@ sub _maximum_arguments { 1 } sub _inline_check_arguments { my $self = shift; - return $self->_inline_throw_error( - q{'The argument passed to first must be a code reference'}) - . q{if $_[0] && ( ref $_[0] || q{} ) ne 'CODE';}; + return ( + 'if (!Params::Util::_CODELIKE($_[0])) {', + $self->_inline_throw_error( + '"The argument passed to first must be a code reference"', + ) . ';', + '}', + ); } sub _return_value { - my $self = shift; - my $slot_access = shift; + my $self = shift; + my ($slot_access) = @_; - return "&List::Util::first( \$_[0], \@{ ${slot_access} } )"; + return '&List::Util::first($_[0], @{ (' . $slot_access . ') })'; } +no Moose::Role; + 1;