Commit | Line | Data |
---|---|---|
204e6232 BF |
1 | #!./perl |
2 | ||
3 | use strict; | |
4 | use warnings; | |
5 | ||
6 | use utf8; | |
7 | use open qw( :utf8 :std ); | |
8 | ||
9 | require q(./test.pl); plan(tests => 2); | |
10 | ||
11 | =pod | |
12 | ||
13 | This tests a strange bug found by Matt S. Trout | |
14 | while building DBIx::Class. Thanks Matt!!!! | |
15 | ||
16 | <A> | |
17 | / \ | |
18 | <C> <B> | |
19 | \ / | |
20 | <D> | |
21 | ||
22 | =cut | |
23 | ||
24 | { | |
25 | package Diᚪၚd_A; | |
26 | use mro 'dfs'; | |
27 | ||
28 | sub ᕘ { 'Diᚪၚd_A::ᕘ' } | |
29 | } | |
30 | { | |
31 | package Diᚪၚd_B; | |
32 | use base 'Diᚪၚd_A'; | |
33 | use mro 'dfs'; | |
34 | ||
35 | sub ᕘ { 'Diᚪၚd_B::ᕘ => ' . (shift)->SUPER::ᕘ } | |
36 | } | |
37 | { | |
38 | package Diᚪၚd_C; | |
39 | use mro 'dfs'; | |
40 | use base 'Diᚪၚd_A'; | |
41 | ||
42 | } | |
43 | { | |
44 | package Diᚪၚd_D; | |
45 | use base ('Diᚪၚd_C', 'Diᚪၚd_B'); | |
46 | use mro 'dfs'; | |
47 | ||
48 | sub ᕘ { 'Diᚪၚd_D::ᕘ => ' . (shift)->SUPER::ᕘ } | |
49 | } | |
50 | ||
51 | ok(eq_array( | |
52 | mro::get_linear_isa('Diᚪၚd_D'), | |
53 | [ qw(Diᚪၚd_D Diᚪၚd_C Diᚪၚd_A Diᚪၚd_B) ] | |
54 | ), '... got the right MRO for Diᚪၚd_D'); | |
55 | ||
56 | is(Diᚪၚd_D->ᕘ, | |
57 | 'Diᚪၚd_D::ᕘ => Diᚪၚd_A::ᕘ', | |
58 | '... got the right next::method dispatch path'); |