xref: /openbsd-src/gnu/usr.bin/perl/t/lib/warnings/pad (revision a28daedfc357b214be5c701aa8ba8adb29a7f1c2)
1  pad.c		AOK
2
3     "%s" variable %s masks earlier declaration in same scope
4	my $x;
5	my $x ;
6
7     Variable "%s" will not stay shared
8	sub x {
9      	    my $x;
10      	    sub y {
11         	sub { $x }
12      	    }
13   	}
14
15	sub x {
16      	    my $x;
17      	    sub y {
18         	$x
19      	    }
20   	}
21
22    "our" variable %s redeclared	(Did you mean "local" instead of "our"?)
23	our $x;
24	{
25	    our $x;
26	}
27
28    %s never introduced		[pad_leavemy]	TODO
29
30__END__
31# pad.c
32use warnings 'misc' ;
33my $x ;
34my $x ;
35my $y = my $y ;
36my $p ;
37package X ;
38my $p ;
39package main ;
40no warnings 'misc' ;
41my $x ;
42my $y ;
43my $p ;
44EXPECT
45"my" variable $x masks earlier declaration in same scope at - line 4.
46"my" variable $y masks earlier declaration in same statement at - line 5.
47"my" variable $p masks earlier declaration in same scope at - line 8.
48########
49# pad.c
50use warnings 'misc' ;
51our $x ;
52my $x ;
53our $y = my $y ;
54our $p ;
55package X ;
56my $p ;
57package main ;
58no warnings 'misc' ;
59our $z ;
60my $z ;
61our $t = my $t ;
62our $q ;
63package X ;
64my $q ;
65EXPECT
66"my" variable $x masks earlier declaration in same scope at - line 4.
67"my" variable $y masks earlier declaration in same statement at - line 5.
68"my" variable $p masks earlier declaration in same scope at - line 8.
69########
70# pad.c
71use warnings 'misc' ;
72my $x ;
73our $x ;
74my $y = our $y ;
75my $p ;
76package X ;
77our $p ;
78package main ;
79no warnings 'misc' ;
80my $z ;
81our $z ;
82my $t = our $t ;
83my $q ;
84package X ;
85our $q ;
86EXPECT
87"our" variable $x masks earlier declaration in same scope at - line 4.
88"our" variable $y masks earlier declaration in same statement at - line 5.
89"our" variable $p masks earlier declaration in same scope at - line 8.
90########
91# pad.c
92use warnings 'closure' ;
93sub x {
94      my $x;
95      sub y {
96         $x
97      }
98   }
99EXPECT
100Variable "$x" will not stay shared at - line 7.
101########
102# pad.c
103no warnings 'closure' ;
104sub x {
105      my $x;
106      sub y {
107         $x
108      }
109   }
110EXPECT
111
112########
113# pad.c
114use warnings 'closure' ;
115sub x {
116      my $x;
117      sub y {
118         sub { $x }
119      }
120   }
121EXPECT
122Variable "$x" will not stay shared at - line 6.
123########
124# pad.c
125use warnings 'closure' ;
126sub x {
127    my $x;
128    sub {
129	$x;
130	sub y {
131	    $x
132	}
133    }->();
134}
135EXPECT
136Variable "$x" will not stay shared at - line 9.
137########
138# pad.c
139use warnings 'closure' ;
140my $x;
141sub {
142    $x;
143    sub f {
144	sub { $x }->();
145    }
146}->();
147EXPECT
148
149########
150# pad.c
151use warnings 'closure' ;
152sub {
153    my $x;
154    sub f { $x }
155}->();
156EXPECT
157Variable "$x" is not available at - line 5.
158########
159# pad.c
160use warnings 'closure' ;
161sub {
162    my $x;
163    eval 'sub f { $x }';
164}->();
165EXPECT
166
167########
168# pad.c
169use warnings 'closure' ;
170sub {
171    my $x;
172    sub f { eval '$x' }
173}->();
174f();
175EXPECT
176Variable "$x" is not available at (eval 1) line 2.
177########
178# pad.c
179use warnings 'closure' ;
180sub x {
181      our $x;
182      sub y {
183         $x
184      }
185   }
186EXPECT
187
188########
189# pad.c
190# see bugid 1754
191use warnings 'closure' ;
192sub f {
193    my $x;
194    sub { eval '$x' };
195}
196f()->();
197EXPECT
198Variable "$x" is not available at (eval 1) line 2.
199########
200use warnings 'closure' ;
201{
202    my $x = 1;
203    $y = \$x; # force abandonment rather than clear-in-place at scope exit
204    sub f2 { eval '$x' }
205}
206f2();
207EXPECT
208Variable "$x" is not available at (eval 1) line 2.
209########
210use warnings 'closure' ;
211for my $x (1,2,3) {
212    sub f { eval '$x' }
213    f();
214}
215f();
216EXPECT
217Variable "$x" is not available at (eval 4) line 2.
218########
219# pad.c
220no warnings 'closure' ;
221sub x {
222      my $x;
223      sub y {
224         sub { $x }
225      }
226   }
227EXPECT
228
229########
230use warnings 'misc' ;
231my $x;
232{
233    my $x;
234}
235EXPECT
236########
237# pad.c
238use warnings 'misc' ;
239our $x ;
240our $x ;
241our $y = our $y ;
242our $p ;
243package X ;
244our $p ;
245package main ;
246no warnings 'misc' ;
247our $a ;
248our $a ;
249our $b = our $b ;
250our $c ;
251package X ;
252our $c ;
253EXPECT
254"our" variable $x redeclared at - line 4.
255"our" variable $y redeclared at - line 5.
256########
257use warnings 'misc' ;
258our $x;
259{
260    our $x;
261}
262our $x;
263no warnings 'misc' ;
264our $y;
265{
266    our $y;
267}
268our $y;
269EXPECT
270"our" variable $x redeclared at - line 4.
271	(Did you mean "local" instead of "our"?)
272"our" variable $x redeclared at - line 6.
273########
274use warnings 'misc' ;
275our $x;
276{
277    my $x;
278}
279no warnings 'misc' ;
280our $y;
281{
282    my $y;
283}
284EXPECT
285########
286use warnings 'misc' ;
287my $x;
288{
289    our $x;
290}
291no warnings 'misc' ;
292my $y;
293{
294    our $y;
295}
296EXPECT
297########
298use warnings 'misc' ;
299my $x;
300{
301    my $x;
302}
303no warnings 'misc' ;
304my $y;
305{
306    my $y;
307}
308EXPECT
309########
310# an our var being introduced should suppress errors about global syms
311use strict;
312use warnings;
313our $x unless $x;
314EXPECT
315