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