summaryrefslogtreecommitdiff
path: root/t/lib/croak/op
blob: 2d2887d9b25d27e866d0f8f171fe7c66e0023fa5 (plain)
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
__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 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
no warnings 'experimental';
push FRED;
EXPECT
Type of arg 1 to push must be array (not constant item) at - line 2, near "FRED;"
Execution of - aborted due to compilation errors.
########
# NAME pop BAREWORD
no warnings 'experimental';
pop FRED;
EXPECT
Type of arg 1 to pop must be array (not constant item) at - line 2, near "FRED;"
Execution of - aborted due to compilation errors.
########
# NAME shift BAREWORD
no warnings 'experimental';
shift FRED;
EXPECT
Type of arg 1 to shift must be array (not constant item) at - line 2, near "FRED;"
Execution of - aborted due to compilation errors.
########
# NAME unshift BAREWORD
no warnings 'experimental';
unshift FRED;
EXPECT
Type of arg 1 to unshift must be array (not constant item) at - line 2, 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.