Commit | Line | Data |
---|---|---|
cba5a3b0 DG |
1 | #!./perl |
2 | ||
3 | BEGIN { | |
4 | chdir 't' if -d 't'; | |
cba5a3b0 | 5 | require './test.pl'; |
43ece5b1 | 6 | set_up_inc('../lib'); |
cba5a3b0 DG |
7 | } |
8 | use strict; | |
9 | use warnings; | |
26230909 | 10 | no warnings 'experimental::refaliasing'; |
7ac5715b | 11 | use vars qw($data $array $values $hash $errpat); |
cba5a3b0 DG |
12 | |
13 | plan 'no_plan'; | |
14 | ||
26230909 | 15 | my $empty; |
d8065907 | 16 | |
f861ba67 | 17 | sub set_errpat { |
dc26b617 FC |
18 | # Checking for a comma after the line number ensures that we are using |
19 | # yyerror for the error, rather than croak. yyerror is preferable for | |
20 | # compile-time errors. | |
21 | $errpat = | |
198aaf38 FC |
22 | qr/Experimental $_[0] on scalar is now forbidden .* line 1\.(?x: |
23 | ).*Type of arg 1 to $_[0] must be hash or array \(not (?x: | |
24 | ).*line 1,/s; | |
f861ba67 FC |
25 | } |
26 | ||
cba5a3b0 | 27 | # Keys -- errors |
f861ba67 | 28 | set_errpat 'keys'; |
7ac5715b FC |
29 | |
30 | eval "keys undef"; | |
26230909 | 31 | like($@, $errpat, |
7ac5715b FC |
32 | 'Errors: keys undef throws error' |
33 | ); | |
34 | ||
35 | undef $empty; | |
36 | eval q"keys $empty"; | |
26230909 | 37 | like($@, $errpat, |
7ac5715b FC |
38 | 'Errors: keys $undef throws error' |
39 | ); | |
40 | ||
41 | is($empty, undef, 'keys $undef does not vivify $undef'); | |
42 | ||
cba5a3b0 | 43 | eval "keys 3"; |
26230909 | 44 | like($@, qr/Type of arg 1 to keys must be hash/, |
cba5a3b0 DG |
45 | 'Errors: keys CONSTANT throws error' |
46 | ); | |
47 | ||
48 | eval "keys qr/foo/"; | |
26230909 | 49 | like($@, $errpat, |
cba5a3b0 DG |
50 | 'Errors: keys qr/foo/ throws error' |
51 | ); | |
52 | ||
feff7485 | 53 | eval q"keys $hash qw/fo bar/"; |
26230909 | 54 | like($@, $errpat, |
cba5a3b0 DG |
55 | 'Errors: keys $hash, @stuff throws error' |
56 | ) or print "# Got: $@"; | |
57 | ||
cba5a3b0 | 58 | # Values -- errors |
f861ba67 | 59 | set_errpat 'values'; |
7ac5715b FC |
60 | |
61 | eval "values undef"; | |
26230909 | 62 | like($@, $errpat, |
7ac5715b FC |
63 | 'Errors: values undef throws error' |
64 | ); | |
65 | ||
66 | undef $empty; | |
67 | eval q"values $empty"; | |
26230909 | 68 | like($@, $errpat, |
7ac5715b FC |
69 | 'Errors: values $undef throws error' |
70 | ); | |
71 | ||
72 | is($empty, undef, 'values $undef does not vivify $undef'); | |
73 | ||
cba5a3b0 | 74 | eval "values 3"; |
26230909 | 75 | like($@, qr/Type of arg 1 to values must be hash/, |
cba5a3b0 DG |
76 | 'Errors: values CONSTANT throws error' |
77 | ); | |
78 | ||
79 | eval "values qr/foo/"; | |
26230909 | 80 | like($@, $errpat, |
cba5a3b0 DG |
81 | 'Errors: values qr/foo/ throws error' |
82 | ); | |
83 | ||
feff7485 | 84 | eval q"values $hash qw/fo bar/"; |
26230909 | 85 | like($@, $errpat, |
cba5a3b0 DG |
86 | 'Errors: values $hash, @stuff throws error' |
87 | ) or print "# Got: $@"; | |
88 | ||
7ac5715b | 89 | # Each -- errors |
f861ba67 | 90 | set_errpat 'each'; |
7ac5715b FC |
91 | |
92 | eval "each undef"; | |
26230909 | 93 | like($@, $errpat, |
7ac5715b FC |
94 | 'Errors: each undef throws error' |
95 | ); | |
cba5a3b0 DG |
96 | |
97 | undef $empty; | |
7ac5715b | 98 | eval q"each $empty"; |
26230909 | 99 | like($@, $errpat, |
7ac5715b FC |
100 | 'Errors: each $undef throws error' |
101 | ); | |
cba5a3b0 | 102 | |
7ac5715b | 103 | is($empty, undef, 'each $undef does not vivify $undef'); |
cba5a3b0 | 104 | |
cba5a3b0 | 105 | eval "each 3"; |
26230909 | 106 | like($@, qr/Type of arg 1 to each must be hash/, |
cba5a3b0 DG |
107 | 'Errors: each CONSTANT throws error' |
108 | ); | |
109 | ||
110 | eval "each qr/foo/"; | |
26230909 | 111 | like($@, $errpat, |
cba5a3b0 DG |
112 | 'Errors: each qr/foo/ throws error' |
113 | ); | |
114 | ||
feff7485 | 115 | eval q"each $hash qw/foo bar/"; |
26230909 | 116 | like($@, $errpat, |
cba5a3b0 DG |
117 | 'Errors: each $hash, @stuff throws error' |
118 | ) or print "# Got: $@"; |