Commit | Line | Data |
---|---|---|
38b8243a GS |
1 | #!./perl |
2 | ||
dc8d642c | 3 | print "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 |
8 | eval { |
9 | die $err; | |
10 | }; | |
11 | ||
12 | print "not " unless $@ eq $err; | |
13 | print "ok 2\n"; | |
14 | ||
15 | $x = [3]; | |
16 | eval { die $x; }; | |
17 | ||
18 | print "not " unless $x->[0] == 4; | |
19 | print "ok 4\n"; | |
20 | ||
21 | eval { | |
22 | eval { | |
23 | die [ 5 ]; | |
24 | }; | |
25 | die if $@; | |
26 | }; | |
05423cc9 GS |
27 | |
28 | eval { | |
29 | eval { | |
30 | die bless [ 7 ], "Error"; | |
31 | }; | |
32 | die if $@; | |
33 | }; | |
34 | ||
35 | print "not " unless ref($@) eq "Out"; | |
36 | print "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 | } |