1#!/usr/bin/perl 2 3use strict; 4use warnings; 5 6use Test::More tests => 3; 7 8BEGIN { use_ok('Class::C3::XS') } 9 10=pod 11 12This tests the successful handling of a next::method call from within an 13anonymous subroutine. 14 15=cut 16 17{ 18 package A; 19 20 sub foo { 21 return 'A::foo'; 22 } 23 24 sub bar { 25 return 'A::bar'; 26 } 27} 28 29{ 30 package B; 31 use base 'A'; 32 33 sub foo { 34 my $code = sub { 35 return 'B::foo => ' . (shift)->next::method(); 36 }; 37 return (shift)->$code; 38 } 39 40 sub bar { 41 my $code1 = sub { 42 my $code2 = sub { 43 return 'B::bar => ' . (shift)->next::method(); 44 }; 45 return (shift)->$code2; 46 }; 47 return (shift)->$code1; 48 } 49} 50 51is(B->foo, "B::foo => A::foo", 52 'method resolved inside anonymous sub'); 53 54is(B->bar, "B::bar => A::bar", 55 'method resolved inside nested anonymous subs'); 56 57 58