#!./perl use strict; use warnings; use utf8; use open qw( :utf8 :std ); require q(./test.pl); plan(tests => 2); =pod This tests a strange bug found by Matt S. Trout while building DBIx::Class. Thanks Matt!!!! / \ \ / =cut { package Diᚪၚd_A; use mro 'dfs'; sub ᕘ { 'Diᚪၚd_A::ᕘ' } } { package Diᚪၚd_B; use base 'Diᚪၚd_A'; use mro 'dfs'; sub ᕘ { 'Diᚪၚd_B::ᕘ => ' . (shift)->SUPER::ᕘ } } { package Diᚪၚd_C; use mro 'dfs'; use base 'Diᚪၚd_A'; } { package Diᚪၚd_D; use base ('Diᚪၚd_C', 'Diᚪၚd_B'); use mro 'dfs'; sub ᕘ { 'Diᚪၚd_D::ᕘ => ' . (shift)->SUPER::ᕘ } } ok(eq_array( mro::get_linear_isa('Diᚪၚd_D'), [ qw(Diᚪၚd_D Diᚪၚd_C Diᚪၚd_A Diᚪၚd_B) ] ), '... got the right MRO for Diᚪၚd_D'); is(Diᚪၚd_D->ᕘ, 'Diᚪၚd_D::ᕘ => Diᚪၚd_A::ᕘ', '... got the right next::method dispatch path');