This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Make ‘No such class’ apply to ${$ref}{key}, too
[perl5.git] / t / lib / croak / op
1 __END__
2 # NAME my $<special>
3 my $!;
4 EXPECT
5 Can't use global $! in "my" at - line 1, near "my $!"
6 Execution of - aborted due to compilation errors.
7 ########
8 # NAME OP_HELEM fields
9 package Foo;
10 use fields qw(a b);
11 sub new {
12     my $class = shift;
13     return fields::new($class);
14 }
15 my Foo $f = Foo->new;
16 $f->{c} = 1;
17 EXPECT
18 No such class field "c" in variable $f of type Foo at - line 8.
19 ########
20 # NAME "No such field" with block: ${$ref}{key}
21 %FIELDS; # empty hash so all keys are invalid
22 my main $r;
23 ${$r}{key};
24 EXPECT
25 No such class field "key" in variable $r of type main at - line 3.
26 ########
27 # NAME OP_HSLICE fields
28 package Foo;
29 use fields qw(a b);
30 sub new {
31     my $class = shift;
32     return fields::new($class);
33 }
34 my Foo $f = Foo->new;
35 @$f{"a", "c"} = ( 1, 2 );
36 EXPECT
37 No such class field "c" in variable $f of type Foo at - line 8.
38 ########
39 # NAME Single OP_HSLICE field
40 %FIELDS; # vivify it, but leave it empty, so all fields are invalid
41 my main $f;
42 @$f{"a"};
43 EXPECT
44 No such class field "a" in variable $f of type main at - line 3.
45 ########
46 # NAME delete BAD
47 delete $x;
48 EXPECT
49 delete argument is not a HASH or ARRAY element or slice at - line 1.
50 ########
51 # NAME exists BAD
52 exists $x;
53 EXPECT
54 exists argument is not a HASH or ARRAY element or a subroutine at - line 1.
55 ########
56 # NAME exists non-sub
57 exists &foo()
58 EXPECT
59 exists argument is not a subroutine name at - line 1.