Perl_op_sibling_splice(0 remove dead code
[perl.git] / t / op / catch.t
1 #!perl
2
3 BEGIN {
4     chdir 't' if -d 't';
5     require './test.pl';
6     set_up_inc('../lib');
7 }
8
9 use warnings;
10 use strict;
11
12 plan 12;
13
14 {
15     package EvalOnFetch;
16     sub TIESCALAR { bless \(my $z = $_[1]), $_[0] }
17     sub FETCH { eval ${$_[0]} // "died" }
18 }
19
20 tie my $begindie, "EvalOnFetch", "BEGIN { die } 123";
21 is "$begindie", "died";
22 tie my $unitcheckdie, "EvalOnFetch", "UNITCHECK { die } 123";
23 is "$unitcheckdie", "died";
24 tie my $rundie, "EvalOnFetch", "die; 123";
25 is "$rundie", "died";
26 tie my $runok, "EvalOnFetch", "123";
27 is "$runok", 123;
28
29 eval { undef };
30 is eval "BEGIN { die } 123", undef;
31 is eval "UNITCHECK { die } 123", undef;
32 is eval "die; 123", undef;
33 is eval "123", 123;
34
35 {
36     package TryOnFetch;
37     sub TIESCALAR { bless \(my $z = $_[1]), $_[0] }
38     sub FETCH { eval { ${$_[0]} ? die : undef; 123 } // "died" }
39 }
40
41 tie my $trydie, "TryOnFetch", 1;
42 is "$trydie", "died";
43 tie my $tryok, "TryOnFetch", 0;
44 is "$tryok", 123;
45
46 eval { undef };
47 is do { eval { die; 123 } }, undef;
48 is do { eval { undef; 123 } }, 123;
49
50 1;