#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use open qw( :utf8 :std );
require q(./test.pl); plan(tests => 2);
=pod
This tests the successful handling of a next::method call from within an
anonymous subroutine.
=cut
{
package ㅏ;
use mro 'c3';
sub ᕘ {
return 'ㅏ::ᕘ';
}
sub Ḃᛆ {
return 'ㅏ::Ḃᛆ';
}
}
{
package Ḃ;
use base 'ㅏ';
use mro 'c3';
sub ᕘ {
my $code = sub {
return 'Ḃ::ᕘ => ' . (shift)->next::method();
};
return (shift)->$code;
}
sub Ḃᛆ {
my $code1 = sub {
my $code2 = sub {
return 'Ḃ::Ḃᛆ => ' . (shift)->next::method();
};
return (shift)->$code2;
};
return (shift)->$code1;
}
}
is(Ḃ->ᕘ, "Ḃ::ᕘ => ㅏ::ᕘ",
'method resolved inside anonymous sub');
is(Ḃ->Ḃᛆ, "Ḃ::Ḃᛆ => ㅏ::Ḃᛆ",
'method resolved inside nested anonymous subs');