From: Jarkko Hietaniemi Date: Sat, 2 Jan 1999 14:55:06 +0000 (+0000) Subject: Object destruction order testing. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=8feb4e9f33850f8c93443f87f3039b93e7d666e1;p=p5sagit%2Fp5-mst-13.2.git Object destruction order testing. p4raw-id: //depot/cfgperl@2554 --- diff --git a/t/op/misc.t b/t/op/misc.t index f57531c..9fe98c4 100755 --- a/t/op/misc.t +++ b/t/op/misc.t @@ -40,7 +40,7 @@ for (@prgs){ # various yaccs may or may not capitalize 'syntax'. $results =~ s/^(syntax|parse) error/syntax error/mig; $expected =~ s/\n+$//; - if ( $results ne $expected){ + if ( $results ne $expected ) { print STDERR "PROG: $switch\n$prog\n"; print STDERR "EXPECTED:\n$expected\n"; print STDERR "GOT:\n$results\n"; @@ -432,3 +432,44 @@ EXPECT foo bar BEGIN failed--compilation aborted at - line 8. +######## +package X; +@ISA='Y'; +sub new { + my $class = shift; + my $self = { }; + bless $self, $class; + my $init = shift; + $self->foo($init); + print "new", $init; + return $self; +} +sub DESTROY { + my $self = shift; + print "DESTROY", $self->foo; +} +package Y; +sub attribute { + my $self = shift; + my $var = shift; + if (@_ == 0) { + return $self->{$var}; + } elsif (@_ == 1) { + $self->{$var} = shift; + } +} +sub AUTOLOAD { + $AUTOLOAD =~ /::([^:]+)$/; + my $method = $1; + splice @_, 1, 0, $method; + goto &attribute; +} +package main; +my $x = X->new(1); +for (2..3) { + my $y = X->new($_); + print $y->foo; +} +print $x->foo; +EXPECT +new1new22DESTROY2new33DESTROY31DESTROY1