1use strict; 2use warnings; 3use Test::More tests => 6; 4 5BEGIN { use_ok('NEXT') }; 6my $order = 0; 7 8package A; 9 10our @ISA = qw/B C D/; 11use if $] >= 5.009005, 'mro', 'dfs'; 12 13 14sub test { ::ok(++$order==1,"test A"); $_[0]->NEXT::UNSEEN::ACTUAL::test;} 15 16package B; 17our @ISA = qw/D C/; 18use if $] >= 5.009005, 'mro', 'dfs'; 19sub test { ::ok(++$order==2,"test B"); $_[0]->NEXT::ACTUAL::UNSEEN::test;} 20 21package C; 22our @ISA = qw/D/; 23use if $] >= 5.009005, 'mro', 'dfs'; 24 25sub test { ::ok(++$order==4,"test C"); $_[0]->NEXT::UNSEEN::ACTUAL::test;} 26 27package D; 28use if $] >= 5.009005, 'mro', 'dfs'; 29 30sub test { ::ok(++$order==3,"test D"); $_[0]->NEXT::ACTUAL::UNSEEN::test;} 31 32package main; 33 34my $foo = {}; 35 36bless($foo,"A"); 37 38eval{ $foo->test } 39 ? fail("Didn't die on missing ancestor") 40 : pass("Correctly dies after C"); 41