1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
__END__
# NAME join,
join,
EXPECT
Not enough arguments for join or string at - line 1, near "join,"
Execution of - aborted due to compilation errors.
########
# NAME my $<special>
my $!;
EXPECT
Can't use global $! in "my" at - line 1, near "my $!"
Execution of - aborted due to compilation errors.
########
# NAME my $<non-ASCII> doesn't output garbage
# \xB6 is same character in all three EBCDIC pages and Latin1
use open ":std", ":utf8";
eval qq|my \$\xb6;|; # ¶ in Latin-1, and EBCDIC 1047, 037, POSIX-BC
print $@;
exit 1;
EXPECT
Can't use global $¶ in "my" at (eval 1) line 1, near "my $¶"
########
# NAME OP_HELEM fields
package Foo;
use fields qw(a b);
sub new {
my $class = shift;
return fields::new($class);
}
my Foo $f = Foo->new;
$f->{c} = 1;
EXPECT
No such class field "c" in variable $f of type Foo at - line 8.
########
# NAME "No such field" with block: ${$ref}{key}
%FIELDS; # empty hash so all keys are invalid
my main $r;
${$r}{key};
EXPECT
No such class field "key" in variable $r of type main at - line 3.
########
# NAME OP_HSLICE fields
package Foo;
use fields qw(a b);
sub new {
my $class = shift;
return fields::new($class);
}
my Foo $f = Foo->new;
@$f{"a", "c"} = ( 1, 2 );
EXPECT
No such class field "c" in variable $f of type Foo at - line 8.
########
# NAME Single OP_HSLICE field
%FIELDS; # vivify it, but leave it empty, so all fields are invalid
my main $f;
@$f{"a"};
EXPECT
No such class field "a" in variable $f of type main at - line 3.
########
# NAME OP_KVHSLICE fields
BEGIN { %FIELDS = qw(a 1 b 1); }
my main $f;
%$f{"a","c"};
EXPECT
No such class field "c" in variable $f of type main at - line 3.
########
# NAME Num-specific &= on @array
use feature 'bitwise';
@a &= 1;
EXPECT
The bitwise feature is experimental at - line 2.
Can't modify array dereference in numeric bitwise and (&) at - line 2, near "1;"
Execution of - aborted due to compilation errors.
########
# NAME Num-specific |= on @array
use feature 'bitwise';
@a |= 1;
EXPECT
The bitwise feature is experimental at - line 2.
Can't modify array dereference in numeric bitwise or (|) at - line 2, near "1;"
Execution of - aborted due to compilation errors.
########
# NAME Num-specific ^= on @array
use feature 'bitwise';
@a ^= 1;
EXPECT
The bitwise feature is experimental at - line 2.
Can't modify array dereference in numeric bitwise xor (^) at - line 2, near "1;"
Execution of - aborted due to compilation errors.
########
# NAME &.= on @array
use feature 'bitwise';
@a &.= 1;
EXPECT
The bitwise feature is experimental at - line 2.
Can't modify array dereference in string bitwise and (&.) at - line 2, near "1;"
Execution of - aborted due to compilation errors.
########
# NAME |.= on @array
use feature 'bitwise';
@a |.= 1;
EXPECT
The bitwise feature is experimental at - line 2.
Can't modify array dereference in string bitwise or (|.) at - line 2, near "1;"
Execution of - aborted due to compilation errors.
########
# NAME ^.= on @array
use feature 'bitwise';
@a ^.= 1;
EXPECT
The bitwise feature is experimental at - line 2.
Can't modify array dereference in string bitwise xor (^.) at - line 2, near "1;"
Execution of - aborted due to compilation errors.
########
# NAME Can't declare conditional
my($a?$b:$c)
EXPECT
Can't declare conditional expression in "my" at - line 1, at EOF
Execution of - aborted due to compilation errors.
########
# NAME Can't declare do block
my(do{})
EXPECT
Can't declare do block in "my" at - line 1, at EOF
Execution of - aborted due to compilation errors.
########
# NAME ($_, state $x) = ...
($_, CORE::state $x) = ();
EXPECT
Initialization of state variables in list context currently forbidden at - line 1, near ");"
Execution of - aborted due to compilation errors.
########
# NAME my $y; ($y, state $x) = ...
my $y; ($y, CORE::state $x) = ();
EXPECT
Initialization of state variables in list context currently forbidden at - line 1, near ");"
Execution of - aborted due to compilation errors.
########
# NAME delete BAD
delete $x;
EXPECT
delete argument is not a HASH or ARRAY element or slice at - line 1.
########
# NAME delete sort
use warnings;
delete sort; # used to warn about scalar context, too
EXPECT
delete argument is not a HASH or ARRAY element or slice at - line 2.
########
# NAME exists BAD
exists $x;
EXPECT
exists argument is not a HASH or ARRAY element or a subroutine at - line 1.
########
# NAME exists non-sub
exists &foo()
EXPECT
exists argument is not a subroutine name at - line 1.
########
# NAME push BAREWORD
push FRED;
EXPECT
Type of arg 1 to push must be array (not constant item) at - line 1, near "FRED;"
Execution of - aborted due to compilation errors.
########
# NAME pop BAREWORD
pop FRED;
EXPECT
Type of arg 1 to pop must be array (not constant item) at - line 1, near "FRED;"
Execution of - aborted due to compilation errors.
########
# NAME shift BAREWORD
shift FRED;
EXPECT
Type of arg 1 to shift must be array (not constant item) at - line 1, near "FRED;"
Execution of - aborted due to compilation errors.
########
# NAME unshift BAREWORD
unshift FRED;
EXPECT
Type of arg 1 to unshift must be array (not constant item) at - line 1, near "FRED;"
Execution of - aborted due to compilation errors.
########
# NAME keys BAREWORD
@a = keys FRED ;
EXPECT
Type of arg 1 to keys must be hash (not constant item) at - line 1, near "FRED ;"
Execution of - aborted due to compilation errors.
########
# NAME values BAREWORD
@a = values FRED ;
EXPECT
Type of arg 1 to values must be hash (not constant item) at - line 1, near "FRED ;"
Execution of - aborted due to compilation errors.
########
# NAME each BAREWORD
@a = each FRED ;
EXPECT
Type of arg 1 to each must be hash (not constant item) at - line 1, near "FRED ;"
Execution of - aborted due to compilation errors.
|