X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FMethod%2FDelegation.pm;h=8f5725a002876205c9a04b88055e6ec761840c09;hb=2e7576bdd6c4a179beadc2d21623c6cad1d66469;hp=f3531611ee60453926a36def9f14a7bf958280b4;hpb=6f94c802188d44415bafdd64422cecd24585a289;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/Method/Delegation.pm b/lib/Moose/Meta/Method/Delegation.pm index f353161..8f5725a 100644 --- a/lib/Moose/Meta/Method/Delegation.pm +++ b/lib/Moose/Meta/Method/Delegation.pm @@ -7,7 +7,7 @@ use warnings; use Carp 'confess'; use Scalar::Util 'blessed', 'weaken'; -our $VERSION = '0.87'; +our $VERSION = '0.96'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; @@ -104,17 +104,29 @@ sub _initialize_body { object => $instance ); } - my @args = (@{ $self->curried_arguments }, @_); - $proxy->$method_to_call(@args); + unshift @_, @{ $self->curried_arguments }; + $proxy->$method_to_call(@_); }; } sub _get_delegate_accessor { my $self = shift; - - my $accessor = $self->associated_attribute->get_read_method_ref; - - $accessor = $accessor->body if blessed $accessor; + my $attr = $self->associated_attribute; + + # NOTE: + # always use a named method when + # possible, if you use the method + # ref and there are modifiers on + # the accessors then it will not + # pick up the modifiers too. Only + # the named method will assure that + # we also have any modifiers run. + # - SL + my $accessor = $attr->has_read_method + ? $attr->get_read_method + : $attr->get_read_method_ref; + + $accessor = $accessor->body if Scalar::Util::blessed $accessor; return $accessor; } @@ -178,9 +190,7 @@ constructor. =head1 BUGS -All complex software has bugs lurking in it, and this module is no -exception. If you find a bug please either email me, or add the bug -to cpan-RT. +See L for details on reporting bugs. =head1 AUTHOR