27 our @ISA = ('My::B', 'My::C');
31 [ My::D->meta->class_precedence_list ],
32 [ 'My::D', 'My::B', 'My::A', 'My::C', 'My::A' ],
33 '... My::D->meta->class_precedence_list == (D B A C A)');
36 [ My::D->meta->linearized_isa ],
37 [ 'My::D', 'My::B', 'My::A', 'My::C' ],
38 '... My::D->meta->linearized_isa == (D B A C)');
50 # 5.9.5+ dies at the moment of
51 # recursive @ISA definition, not later when
52 # you try to use the @ISAs.
57 our @ISA = ('My::2::C');
60 our @ISA = ('My::2::A');
63 our @ISA = ('My::2::B');
66 My::2::B->meta->class_precedence_list
68 ok($@, '... recursive inheritance breaks correctly :)');
85 our @ISA = ('My::3::A');
87 our @ISA = ('My::3::A', 'My::3::B');
89 our @ISA = ('My::3::B', 'My::3::C');
93 [ My::3::D->meta->class_precedence_list ],
94 [ 'My::3::D', 'My::3::B', 'My::3::A', 'My::3::C', 'My::3::A', 'My::3::B', 'My::3::A' ],
95 '... My::3::D->meta->class_precedence_list == (D B A C A B A)');
98 [ My::3::D->meta->linearized_isa ],
99 [ 'My::3::D', 'My::3::B', 'My::3::A', 'My::3::C' ],
100 '... My::3::D->meta->linearized_isa == (D B A C B)');
104 Test all the class_precedence_lists
105 using Perl's own dispatcher to check
110 my @CLASS_PRECEDENCE_LIST;
116 sub CPL { push @CLASS_PRECEDENCE_LIST => 'Foo' }
122 push @CLASS_PRECEDENCE_LIST => 'Bar';
131 push @CLASS_PRECEDENCE_LIST => 'Baz';
139 push @CLASS_PRECEDENCE_LIST => 'Foo::Bar';
143 package Foo::Bar::Baz;
144 our @ISA = ('Foo::Bar');
147 push @CLASS_PRECEDENCE_LIST => 'Foo::Bar::Baz';
153 Foo::Bar::Baz->CPL();
156 [ Foo::Bar::Baz->meta->class_precedence_list ],
157 [ @CLASS_PRECEDENCE_LIST ],
158 '... Foo::Bar::Baz->meta->class_precedence_list == @CLASS_PRECEDENCE_LIST');