X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FMethod%2FAccessor%2FNative%2FHash%2Fdelete.pm;h=7338f565f12711ea43b0f922ba30632c90915518;hb=0953b5a4784ae9e36130d87ad9bff255b5c581c8;hp=753171612690178f4849374edef02bed6512b77a;hpb=8b9641b857cdd065a68f9b74ad072b1d58fcd4e1;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/Method/Accessor/Native/Hash/delete.pm b/lib/Moose/Meta/Method/Accessor/Native/Hash/delete.pm index 7531716..7338f56 100644 --- a/lib/Moose/Meta/Method/Accessor/Native/Hash/delete.pm +++ b/lib/Moose/Meta/Method/Accessor/Native/Hash/delete.pm @@ -3,27 +3,39 @@ package Moose::Meta::Method::Accessor::Native::Hash::delete; use strict; use warnings; -our $VERSION = '1.14'; +our $VERSION = '1.15'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; use Moose::Role; -with 'Moose::Meta::Method::Accessor::Native::Hash::Writer' => - { -excludes => ['_inline_optimized_set_new_value'] }; +with 'Moose::Meta::Method::Accessor::Native::Hash::Writer' => { + -excludes => [ + qw( + _inline_optimized_set_new_value + _return_value + ) + ], +}; sub _adds_members { 0 } sub _potential_value { my ( $self, $slot_access ) = @_; - return "( do { my \%potential = %{ $slot_access }; delete \@potential{\@_}; \\\%potential; } )"; + return "( do { my \%potential = %{ $slot_access }; \@return = delete \@potential{\@_}; \\\%potential; } )"; } sub _inline_optimized_set_new_value { my ( $self, $inv, $new, $slot_access ) = @_; - return "delete \@{ $slot_access }{\@_}"; + return "\@return = delete \@{ $slot_access }{\@_}"; +} + +sub _return_value { + my ( $self, $slot_access ) = @_; + + return 'return wantarray ? @return : $return[-1];'; } no Moose::Role;