X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FClass%2FC3.pm;h=c86f76dcfb5d979fae3643ae8583ef4de345415b;hb=bad9dc5953e918bfb388c7a7f430493a3e44a8d0;hp=6a23d4df14e248e26a2eacf73bd2758f61feaa89;hpb=5dd9299c18bd54f97408f6580abca725e937d6ac;p=gitmo%2FClass-C3.git diff --git a/lib/Class/C3.pm b/lib/Class/C3.pm index 6a23d4d..c86f76d 100644 --- a/lib/Class/C3.pm +++ b/lib/Class/C3.pm @@ -6,7 +6,7 @@ use warnings; use Scalar::Util 'blessed'; -our $VERSION = '0.08'; +our $VERSION = '0.09'; # this is our global stash of both # MRO's and method dispatch tables @@ -213,12 +213,14 @@ our %METHOD_CACHE; sub method { my $level = 1; - my $method_caller; + my ($method_caller, $label, @label); while ($method_caller = (caller($level++))[3]) { - last unless $method_caller eq '(eval)'; + @label = (split '::', $method_caller); + $label = pop @label; + last unless + $label eq '(eval)' || + $label eq '__ANON__'; } - my @label = (split '::', $method_caller); - my $label = pop @label; my $caller = join '::' => @label; my $self = $_[0]; my $class = blessed($self) || $self; @@ -529,6 +531,18 @@ module's test suite. =back +=head1 ACKNOWLEGEMENTS + +=over 4 + +=item Thanks to Matt S. Trout for using this module in his module L +and finding many bugs and providing fixes. + +=item Thanks to Justin Guenther for making C more robust by handling +calls inside C and anon-subs. + +=back + =head1 AUTHOR Stevan Little, Estevan@iinteractive.comE