#!./perl
-print "1..55\n";
+print "1..61\n";
# Test glob operations.
package A;
sub new { bless {}, shift }
DESTROY { print "# destroying 'A'\nok 51\n" }
- package B;
+ package _B;
sub new { bless {}, shift }
- DESTROY { print "# destroying 'B'\nok 50\n"; bless shift, 'A' }
+ DESTROY { print "# destroying '_B'\nok 50\n"; bless shift, 'A' }
package main;
- my $b = B->new;
+ my $b = _B->new;
}
# test if $_[0] is properly protected in DESTROY()
print "# good, didn't recurse\n";
}
+# test if refgen behaves with autoviv magic
+
+{
+ my @a;
+ $a[1] = "ok 53\n";
+ print ${\$_} for @a;
+}
+
+# This test is the reason for postponed destruction in sv_unref
+$a = [1,2,3];
+$a = $a->[1];
+print "not " unless $a == 2;
+print "ok 54\n";
+
+sub x::DESTROY {print "ok ", 54 + shift->[0], "\n"}
+{ my $a1 = bless [4],"x";
+ my $a2 = bless [3],"x";
+ { my $a3 = bless [2],"x";
+ my $a4 = bless [1],"x";
+ 567;
+ }
+}
+
+
# test global destruction
+my $test = 59;
+my $test1 = $test + 1;
+my $test2 = $test + 2;
+
package FINALE;
{
- $ref3 = bless ["ok 55\n"]; # package destruction
- my $ref2 = bless ["ok 54\n"]; # lexical destruction
- local $ref1 = bless ["ok 53\n"]; # dynamic destruction
+ $ref3 = bless ["ok $test2\n"]; # package destruction
+ my $ref2 = bless ["ok $test1\n"]; # lexical destruction
+ local $ref1 = bless ["ok $test\n"]; # dynamic destruction
1; # flush any temp values on stack
}