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