xref: /openbsd/gnu/usr.bin/perl/t/lib/feature/indirect (revision f2a19305)
1de8cc8edSafresh1Test no feature indirect.
2de8cc8edSafresh1
3de8cc8edSafresh1__END__
4de8cc8edSafresh1# NAME feature indirect
5de8cc8edSafresh1use feature 'say';
6de8cc8edSafresh1package Foo {
7de8cc8edSafresh1  sub new { bless {}, shift }
8de8cc8edSafresh1}
9de8cc8edSafresh1# various indirect object look-alikes
10de8cc8edSafresh1my $foox = "foox";
11de8cc8edSafresh1print STDERR "Hello\n";
12de8cc8edSafresh1printf STDERR "Test%s\n", "x";
13de8cc8edSafresh1say STDERR "Hello";
14de8cc8edSafresh1exec $foox "foo", "bar";
15de8cc8edSafresh1system $foox "foo", "bar";
16de8cc8edSafresh1my $x = new Foo;
17de8cc8edSafresh1no feature "indirect";
18de8cc8edSafresh1print STDERR "Hello\n";
19de8cc8edSafresh1printf STDERR "Test%s\n", "x";
20de8cc8edSafresh1say STDERR "Hello";
21de8cc8edSafresh1exec $foox "foo", "bar";
22de8cc8edSafresh1system $foox "foo", "bar";
23de8cc8edSafresh1my $y = new Foo;
24de8cc8edSafresh1EXPECT
25de8cc8edSafresh1OPTIONS fatal
26*f2a19305Safresh1Bareword found where operator expected (Do you need to predeclare "new"?) at - line 19, near "new Foo"
27de8cc8edSafresh1syntax error at - line 19, near "new Foo"
28de8cc8edSafresh1Execution of - aborted due to compilation errors.
29de8cc8edSafresh1########
30de8cc8edSafresh1# NAME METHOD BLOCK
31de8cc8edSafresh1use feature 'say';
32de8cc8edSafresh1package Foo {
33de8cc8edSafresh1  sub new { bless {}, shift }
34de8cc8edSafresh1}
35de8cc8edSafresh1# make sure this works (either way)
36de8cc8edSafresh1my $st = STDOUT;
37de8cc8edSafresh1print { $st } "Foo\n";
38de8cc8edSafresh1say { $st } "Foo";
39de8cc8edSafresh1
40de8cc8edSafresh1# make sure this continues to work by default
41de8cc8edSafresh1my $class = "Foo";
42de8cc8edSafresh1my $x = new { $class };
43de8cc8edSafresh1
44de8cc8edSafresh1use feature "indirect";
45de8cc8edSafresh1
46de8cc8edSafresh1# and with it explicitly enabled
47de8cc8edSafresh1
48de8cc8edSafresh1print { $st } "Foo\n";
49de8cc8edSafresh1say { $st } "Foo";
50de8cc8edSafresh1
51de8cc8edSafresh1my $y = new { $class };
52de8cc8edSafresh1
53de8cc8edSafresh1
54de8cc8edSafresh1no feature "indirect";
55de8cc8edSafresh1
56de8cc8edSafresh1# and only the indirect now fails
57de8cc8edSafresh1print { $st } "Foo\n";
58de8cc8edSafresh1say { $st } "Foo";
59de8cc8edSafresh1my $z = new { $class };
60de8cc8edSafresh1
61de8cc8edSafresh1EXPECT
62de8cc8edSafresh1OPTIONS fatal
63de8cc8edSafresh1syntax error at - line 29, near "new { "
64de8cc8edSafresh1Execution of - aborted due to compilation errors.
65de8cc8edSafresh1########
66de8cc8edSafresh1# NAME METHOD SCALAR
67de8cc8edSafresh1use feature 'say';
68de8cc8edSafresh1package Foo {
69de8cc8edSafresh1  sub new { bless {}, shift }
70de8cc8edSafresh1}
71de8cc8edSafresh1# make sure this works (either way)
72de8cc8edSafresh1my $st = STDOUT;
73de8cc8edSafresh1print $st "Foo\n";
74de8cc8edSafresh1say $st "Foo";
75de8cc8edSafresh1
76de8cc8edSafresh1# make sure this continues to work by default
77de8cc8edSafresh1my $class = "Foo";
78de8cc8edSafresh1my $x = new $class;
79de8cc8edSafresh1
80de8cc8edSafresh1use feature "indirect";
81de8cc8edSafresh1
82de8cc8edSafresh1# and with it explicitly enabled
83de8cc8edSafresh1
84de8cc8edSafresh1print $st "Foo\n";
85de8cc8edSafresh1say $st "Foo";
86de8cc8edSafresh1
87de8cc8edSafresh1my $y = new $class;
88de8cc8edSafresh1
89de8cc8edSafresh1
90de8cc8edSafresh1no feature "indirect";
91de8cc8edSafresh1
92de8cc8edSafresh1# and only the indirect now fails
93de8cc8edSafresh1print $st "Foo\n";
94de8cc8edSafresh1say $st "Foo";
95de8cc8edSafresh1my $z = new $class;
96de8cc8edSafresh1
97de8cc8edSafresh1EXPECT
98de8cc8edSafresh1OPTIONS fatal
99*f2a19305Safresh1Scalar found where operator expected (Do you need to predeclare "new"?) at - line 29, near "new $class"
100de8cc8edSafresh1syntax error at - line 29, near "new $class"
101de8cc8edSafresh1Execution of - aborted due to compilation errors.
102de8cc8edSafresh1########
103de8cc8edSafresh1# NAME FUNCMETH SCALAR
104de8cc8edSafresh1use feature 'say';
105de8cc8edSafresh1package Foo {
106de8cc8edSafresh1  sub new { bless {}, shift }
107de8cc8edSafresh1}
108de8cc8edSafresh1# make sure this works (either way)
109de8cc8edSafresh1my $st = STDOUT;
110de8cc8edSafresh1print $st ("Foo\n");
111de8cc8edSafresh1say $st ("Foo");
112de8cc8edSafresh1
113de8cc8edSafresh1# make sure this continues to work by default
114de8cc8edSafresh1my $class = "Foo";
115de8cc8edSafresh1my $x = new $class ();
116de8cc8edSafresh1
117de8cc8edSafresh1use feature "indirect";
118de8cc8edSafresh1
119de8cc8edSafresh1# and with it explicitly enabled
120de8cc8edSafresh1
121de8cc8edSafresh1print $st ("Foo\n");
122de8cc8edSafresh1say $st ("Foo");
123de8cc8edSafresh1
124de8cc8edSafresh1my $y = new $class ();
125de8cc8edSafresh1
126de8cc8edSafresh1
127de8cc8edSafresh1no feature "indirect";
128de8cc8edSafresh1
129de8cc8edSafresh1# and only the indirect now fails
130de8cc8edSafresh1print $st ("Foo\n");
131de8cc8edSafresh1say $st ("Foo");
132de8cc8edSafresh1my $z = new $class ();
133de8cc8edSafresh1
134de8cc8edSafresh1EXPECT
135de8cc8edSafresh1OPTIONS fatal
136*f2a19305Safresh1Scalar found where operator expected (Do you need to predeclare "new"?) at - line 29, near "new $class"
137de8cc8edSafresh1syntax error at - line 29, near "new $class "
138de8cc8edSafresh1Execution of - aborted due to compilation errors.
139