diff options
author | Bram <p5p@perl.wizbit.be> | 2009-07-25 22:11:55 +0200 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2009-07-25 21:53:34 +0100 |
commit | 2788925507d099c7b1e9382ad2ddc4f3d692de28 (patch) | |
tree | a952103071bf04ede4a123aa480db46c78f70aa7 /t | |
parent | d80618d26460a93181dddc9ec53c3fceef864290 (diff) | |
download | perl-2788925507d099c7b1e9382ad2ddc4f3d692de28.tar.gz |
Tests for commit 1375cf1cf2085f851bb176047d5e60248542f555
Diffstat (limited to 't')
-rw-r--r-- | t/op/universal.t | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/t/op/universal.t b/t/op/universal.t index a1ff975c70..a24d7aabb9 100644 --- a/t/op/universal.t +++ b/t/op/universal.t @@ -10,7 +10,7 @@ BEGIN { require "./test.pl"; } -plan tests => 117; +plan tests => 123; $a = {}; bless $a, "Bob"; @@ -253,3 +253,57 @@ use warnings "deprecated"; like($m, qr/^UNIVERSAL->import is deprecated/, "deprecation warning for UNIVERSAL->import"); } + +# Test: [perl #66112]: change @ISA inside sub isa +{ + package RT66112::A; + + package RT66112::B; + + sub isa { + my $self = shift; + @ISA = qw/RT66112::A/; + return $self->SUPER::isa(@_); + } + + package RT66112::C; + + package RT66112::D; + + sub isa { + my $self = shift; + @RT66112::E::ISA = qw/RT66112::A/; + return $self->SUPER::isa(@_); + } + + package RT66112::E; + + package main; + + @RT66112::B::ISA = qw//; + @RT66112::C::ISA = qw/RT66112::B/; + @RT66112::T1::ISA = qw/RT66112::C/; + ok(RT66112::T1->isa('RT66112::C'), "modify \@ISA in isa (RT66112::T1 isa RT66112::C)"); + + @RT66112::B::ISA = qw//; + @RT66112::C::ISA = qw/RT66112::B/; + @RT66112::T2::ISA = qw/RT66112::C/; + ok(RT66112::T2->isa('RT66112::B'), "modify \@ISA in isa (RT66112::T2 isa RT66112::B)"); + + @RT66112::B::ISA = qw//; + @RT66112::C::ISA = qw/RT66112::B/; + @RT66112::T3::ISA = qw/RT66112::C/; + ok(RT66112::T3->isa('RT66112::A'), "modify \@ISA in isa (RT66112::T3 isa RT66112::A)"); + + @RT66112::E::ISA = qw/RT66112::D/; + @RT66112::T4::ISA = qw/RT66112::E/; + ok(RT66112::T4->isa('RT66112::E'), "modify \@ISA in isa (RT66112::T4 isa RT66112::E)"); + + @RT66112::E::ISA = qw/RT66112::D/; + @RT66112::T5::ISA = qw/RT66112::E/; + ok(! RT66112::T5->isa('RT66112::D'), "modify \@ISA in isa (RT66112::T5 not isa RT66112::D)"); + + @RT66112::E::ISA = qw/RT66112::D/; + @RT66112::T6::ISA = qw/RT66112::E/; + ok(RT66112::T6->isa('RT66112::A'), "modify \@ISA in isa (RT66112::T6 isa RT66112::A)"); +} |