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 | |
cba5a3b0 | 17 | # Keys -- errors |
26230909 | 18 | $errpat = qr/Experimental keys on scalar is now forbidden/; |
7ac5715b FC |
19 | |
20 | eval "keys undef"; | |
26230909 | 21 | like($@, $errpat, |
7ac5715b FC |
22 | 'Errors: keys undef throws error' |
23 | ); | |
24 | ||
25 | undef $empty; | |
26 | eval q"keys $empty"; | |
26230909 | 27 | like($@, $errpat, |
7ac5715b FC |
28 | 'Errors: keys $undef throws error' |
29 | ); | |
30 | ||
31 | is($empty, undef, 'keys $undef does not vivify $undef'); | |
32 | ||
cba5a3b0 | 33 | eval "keys 3"; |
26230909 | 34 | like($@, qr/Type of arg 1 to keys must be hash/, |
cba5a3b0 DG |
35 | 'Errors: keys CONSTANT throws error' |
36 | ); | |
37 | ||
38 | eval "keys qr/foo/"; | |
26230909 | 39 | like($@, $errpat, |
cba5a3b0 DG |
40 | 'Errors: keys qr/foo/ throws error' |
41 | ); | |
42 | ||
feff7485 | 43 | eval q"keys $hash qw/fo bar/"; |
26230909 | 44 | like($@, $errpat, |
cba5a3b0 DG |
45 | 'Errors: keys $hash, @stuff throws error' |
46 | ) or print "# Got: $@"; | |
47 | ||
cba5a3b0 | 48 | # Values -- errors |
26230909 | 49 | $errpat = qr/Experimental values on scalar is now forbidden/; |
7ac5715b FC |
50 | |
51 | eval "values undef"; | |
26230909 | 52 | like($@, $errpat, |
7ac5715b FC |
53 | 'Errors: values undef throws error' |
54 | ); | |
55 | ||
56 | undef $empty; | |
57 | eval q"values $empty"; | |
26230909 | 58 | like($@, $errpat, |
7ac5715b FC |
59 | 'Errors: values $undef throws error' |
60 | ); | |
61 | ||
62 | is($empty, undef, 'values $undef does not vivify $undef'); | |
63 | ||
cba5a3b0 | 64 | eval "values 3"; |
26230909 | 65 | like($@, qr/Type of arg 1 to values must be hash/, |
cba5a3b0 DG |
66 | 'Errors: values CONSTANT throws error' |
67 | ); | |
68 | ||
69 | eval "values qr/foo/"; | |
26230909 | 70 | like($@, $errpat, |
cba5a3b0 DG |
71 | 'Errors: values qr/foo/ throws error' |
72 | ); | |
73 | ||
feff7485 | 74 | eval q"values $hash qw/fo bar/"; |
26230909 | 75 | like($@, $errpat, |
cba5a3b0 DG |
76 | 'Errors: values $hash, @stuff throws error' |
77 | ) or print "# Got: $@"; | |
78 | ||
7ac5715b | 79 | # Each -- errors |
26230909 | 80 | $errpat = qr/Experimental each on scalar is now forbidden/; |
7ac5715b FC |
81 | |
82 | eval "each undef"; | |
26230909 | 83 | like($@, $errpat, |
7ac5715b FC |
84 | 'Errors: each undef throws error' |
85 | ); | |
cba5a3b0 DG |
86 | |
87 | undef $empty; | |
7ac5715b | 88 | eval q"each $empty"; |
26230909 | 89 | like($@, $errpat, |
7ac5715b FC |
90 | 'Errors: each $undef throws error' |
91 | ); | |
cba5a3b0 | 92 | |
7ac5715b | 93 | is($empty, undef, 'each $undef does not vivify $undef'); |
cba5a3b0 | 94 | |
cba5a3b0 | 95 | eval "each 3"; |
26230909 | 96 | like($@, qr/Type of arg 1 to each must be hash/, |
cba5a3b0 DG |
97 | 'Errors: each CONSTANT throws error' |
98 | ); | |
99 | ||
100 | eval "each qr/foo/"; | |
26230909 | 101 | like($@, $errpat, |
cba5a3b0 DG |
102 | 'Errors: each qr/foo/ throws error' |
103 | ); | |
104 | ||
feff7485 | 105 | eval q"each $hash qw/foo bar/"; |
26230909 | 106 | like($@, $errpat, |
cba5a3b0 DG |
107 | 'Errors: each $hash, @stuff throws error' |
108 | ) or print "# Got: $@"; | |
109 | ||
d86b3122 FC |
110 | use feature 'refaliasing'; |
111 | my $a = 7; | |
112 | our %h; | |
113 | \$h{f} = \$a; | |
26230909 AC |
114 | ($a, $b) = each %h; |
115 | is "$a $b", "f 7", 'each %hash in list assignment'; | |
d86b3122 | 116 | $a = 7; |
26230909 AC |
117 | ($a, $b) = (3, values %h); |
118 | is "$a $b", "3 7", 'values %hash in list assignment'; | |
d86b3122 FC |
119 | *a = sub { \@_ }->($a); |
120 | $a = 7; | |
26230909 AC |
121 | ($a, $b) = each our @a; |
122 | is "$a $b", "0 7", 'each @array in list assignment'; | |
d86b3122 | 123 | $a = 7; |
26230909 AC |
124 | ($a, $b) = (3, values @a); |
125 | is "$a $b", "3 7", 'values @array in list assignment'; |