1b39c5158Smillert#!perl -w 2b39c5158Smillert 3b39c5158SmillertBEGIN { 4b39c5158Smillert chdir 't' if -d 't'; 5b39c5158Smillert require "./test.pl"; 6*5759b3d2Safresh1 set_up_inc('../lib'); 7b39c5158Smillert} 8b39c5158Smillert 9b39c5158Smillertuse strict; 10b39c5158Smillert 11b39c5158Smillertplan 'no_plan'; 12b39c5158Smillert 13b39c5158Smillert# package klonk doesn't have a stash. 14b39c5158Smillert 15b39c5158Smillertpackage kapow; 16b39c5158Smillertuse mro 'c3'; 17b39c5158Smillert 18b39c5158Smillert# No parents 19b39c5158Smillert 20b39c5158Smillertpackage urkkk; 21b39c5158Smillertuse mro 'c3'; 22b39c5158Smillert 23b39c5158Smillert# 1 parent 24b39c5158Smillert@urkkk::ISA = 'klonk'; 25b39c5158Smillert 26b39c5158Smillertpackage kayo; 27b39c5158Smillertuse mro 'c3'; 28b39c5158Smillert 29b39c5158Smillert# 2 parents 30b39c5158Smillert@urkkk::ISA = ('klonk', 'kapow'); 31b39c5158Smillert 32b39c5158Smillertpackage thwacke; 33b39c5158Smillertuse mro 'c3'; 34b39c5158Smillert 35b39c5158Smillert# No parents, has @ISA 36b39c5158Smillert@thwacke::ISA = (); 37b39c5158Smillert 38b39c5158Smillertpackage zzzzzwap; 39b39c5158Smillertuse mro 'c3'; 40b39c5158Smillert 41b39c5158Smillert@zzzzzwap::ISA = ('thwacke', 'kapow'); 42b39c5158Smillert 43b39c5158Smillertpackage whamm; 44b39c5158Smillertuse mro 'c3'; 45b39c5158Smillert 46b39c5158Smillert@whamm::ISA = ('kapow', 'thwacke'); 47b39c5158Smillert 48b39c5158Smillertpackage main; 49b39c5158Smillert 50b39c5158Smillertmy %expect = 51b39c5158Smillert ( 52b39c5158Smillert klonk => [qw(klonk)], 53b39c5158Smillert urkkk => [qw(urkkk klonk kapow)], 54b39c5158Smillert kapow => [qw(kapow)], 55b39c5158Smillert kayo => [qw(kayo)], 56b39c5158Smillert thwacke => [qw(thwacke)], 57b39c5158Smillert zzzzzwap => [qw(zzzzzwap thwacke kapow)], 58b39c5158Smillert whamm => [qw(whamm kapow thwacke)], 59b39c5158Smillert ); 60b39c5158Smillert 61b39c5158Smillertforeach my $package (qw(klonk urkkk kapow kayo thwacke zzzzzwap whamm)) { 62b39c5158Smillert my $ref = bless [], $package; 63b39c5158Smillert my $isa = $expect{$package}; 64b39c5158Smillert is("@{mro::get_linear_isa($package)}", "@$isa", "\@ISA for $package"); 65b39c5158Smillert 66b39c5158Smillert foreach my $class ($package, @$isa, 'UNIVERSAL') { 67898184e3Ssthen object_ok($ref, $class, $package); 68b39c5158Smillert } 69b39c5158Smillert} 706fb12b70Safresh1 716fb12b70Safresh1package _119433 { 726fb12b70Safresh1 use mro 'c3'; 736fb12b70Safresh1 no warnings 'uninitialized'; 746fb12b70Safresh1 $#_119433::ISA++; 756fb12b70Safresh1 ::pass "no crash when ISA contains nonexistent elements"; 766fb12b70Safresh1} 77