xref: /openbsd-src/gnu/usr.bin/perl/t/lib/croak/class (revision 5486feefcc8cb79b19e014ab332cc5dfd05b3b33)
1__END__
2# Method calls on no args
3no warnings 'experimental::class';
4use feature 'class';
5class XXX { method m { } }
6XXX::m()
7EXPECT
8Cannot invoke method "m" on a non-instance at - line 5.
9########
10# Method calls on non-ref
11no warnings 'experimental::class';
12use feature 'class';
13class XXX { method m { } }
14XXX::m(123)
15EXPECT
16Cannot invoke method "m" on a non-instance at - line 5.
17########
18# Method calls on non-object
19no warnings 'experimental::class';
20use feature 'class';
21class XXX { method m { } }
22XXX::m([])
23EXPECT
24Cannot invoke method "m" on a non-instance at - line 5.
25########
26# Method calls from a different class
27no warnings 'experimental::class';
28use feature 'class';
29class XXX { method m { } }
30class YYY {}
31YYY->new->XXX::m();
32EXPECT
33Cannot invoke a method of "XXX" on an instance of "YYY" at - line 6.
34########
35no warnings 'experimental::class';
36use feature 'class';
37class XXX {}
38bless [], "XXX";
39EXPECT
40Attempt to bless into a class at - line 4.
41########
42no warnings 'experimental::class';
43use feature 'class';
44class XXX {}
45bless(XXX->new, "main");
46EXPECT
47Can't bless an object reference at - line 4.
48########
49no warnings 'experimental::class';
50use feature 'class';
51class XXX { field $zz; $zz = 123; }
52EXPECT
53Field $zz is not accessible outside a method at - line 3.
54########
55no warnings 'experimental::class';
56use feature 'class';
57class XXX { field $x; sub f { print $x } }
58EXPECT
59Field $x is not accessible outside a method at - line 3.
60########
61no warnings 'experimental::class';
62use feature 'class';
63class XXX {
64  field $x;
65  class YYY { method m { print $x } }
66}
67EXPECT
68Field $x of "XXX" is not accessible in a method of "YYY" at - line 5.
69########
70no warnings 'experimental::class';
71use feature 'class';
72class XXX {}
73class XXX {}
74EXPECT
75Cannot reopen existing class "XXX" at - line 4.
76########
77no warnings 'experimental::class';
78use feature 'class';
79class XXX {}
80push @XXX::ISA, q(Another);
81EXPECT
82Modification of a read-only value attempted at - line 4.
83########
84no warnings 'experimental::class';
85use feature 'class';
86BEGIN { push @XXX::ISA, q(Another); }
87class XXX {}
88EXPECT
89Cannot create class XXX as it already has a non-empty @ISA at - line 4.
90########
91use strict;
92no warnings 'experimental::class';
93use feature 'class';
94class XXX {
95  field $x = $self + 1;
96}
97EXPECT
98Global symbol "$self" requires explicit package name (did you forget to declare "my $self"?) at - line 5.
99Execution of - aborted due to compilation errors.
100########
101# This test is known to leak: see GH #20812.
102no warnings 'experimental::class';
103use feature 'class';
104class XXX {
105  field $x = last;
106}
107EXPECT
108Can't "last" out of field initialiser expression at - line 5.
109########
110use strict;
111no warnings 'experimental::class';
112use feature 'class';
113class XXX {
114  field $x :param(p);
115  field $y :param(p);
116}
117EXPECT
118Cannot assign :param(p) to field $y because that name is already in use at - line 6.
119########
120use strict;
121no warnings 'experimental::class';
122use feature 'class';
123class XXX {
124  field $x :param(p);
125}
126class YYY :isa(XXX) {
127  field $y :param(p);
128}
129EXPECT
130Cannot assign :param(p) to field $y because that name is already in use at - line 8.
131########
132use strict;
133no warnings 'experimental::class';
134use feature 'class';
135class XXX {
136  my $classname = __CLASS__;
137}
138EXPECT
139Cannot use __CLASS__ outside of a method or field initializer expression at - line 5.
140########
141# NAME try to create an object of incomplete class (error)
142use v5.36;
143use feature 'class';
144no warnings 'experimental::class';
145eval "class C {";
146C->new;
147EXPECT
148Cannot create an object of incomplete class "C" at - line 5.
149########
150# NAME try to create an object of incomplete class (compile-time)
151use v5.36;
152use feature 'class';
153no warnings 'experimental::class';
154class C { BEGIN { C->new; } };
155EXPECT
156Cannot create an object of incomplete class "C" at - line 4.
157BEGIN failed--compilation aborted at - line 4.
158