This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Optimize reversing an array in-place
[perl5.git] / t / op / die.t
CommitLineData
38b8243a
GS
1#!./perl
2
dc8d642c 3print "1..15\n";
38b8243a
GS
4
5$SIG{__DIE__} = sub { print ref($_[0]) ? ("ok ",$_[0]->[0]++,"\n") : @_ } ;
6
06bf62c7 7$err = "#[\000]\nok 1\n";
38b8243a
GS
8eval {
9 die $err;
10};
11
12print "not " unless $@ eq $err;
13print "ok 2\n";
14
15$x = [3];
16eval { die $x; };
17
18print "not " unless $x->[0] == 4;
19print "ok 4\n";
20
21eval {
22 eval {
23 die [ 5 ];
24 };
25 die if $@;
26};
05423cc9
GS
27
28eval {
29 eval {
30 die bless [ 7 ], "Error";
31 };
32 die if $@;
33};
34
35print "not " unless ref($@) eq "Out";
36print "ok 10\n";
37
ff882698
AE
38{
39 package Error;
05423cc9 40
ff882698
AE
41 sub PROPAGATE {
42 print "ok ",$_[0]->[0]++,"\n";
43 bless [$_[0]->[0]], "Out";
44 }
45}
46
47{
48 # die/warn and utf8
49 use utf8;
50 local $SIG{__DIE__};
51 my $msg = "ce ºtii tu, bã ?\n";
52 eval { die $msg }; print "not " unless $@ eq $msg;
53 print "ok 11\n";
54 our $err;
55 local $SIG{__WARN__} = $SIG{__DIE__} = sub { $err = shift };
56 eval { die $msg }; print "not " unless $err eq $msg;
57 print "ok 12\n";
58 eval { warn $msg }; print "not " unless $err eq $msg;
59 print "ok 13\n";
608b3986
AE
60 eval qq/ use strict; \$\x{3b1} /;
61 print "not " unless $@ =~ /Global symbol "\$\x{3b1}"/;
62 print "ok 14\n";
05423cc9 63}
dc8d642c
DM
64
65# [perl #36470] got uninit warning if $@ was undef
66
67{
68 my $ok = 1;
69 local $SIG{__DIE__};
70 local $SIG{__WARN__} = sub { $ok = 0 };
71 eval { undef $@; die };
72 print "not " unless $ok;
73 print "ok 15\n";
74}