This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
54d72cdef9105e109f24c651650f3436df18ad40
[perl5.git] / t / lib / warnings / pad
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
32 use warnings 'misc' ;
33 my $x ;
34 my $x ;
35 my $y = my $y ;
36 my $p ;
37 package X ;
38 my $p ;
39 package main ;
40 no warnings 'misc' ;
41 my $x ;
42 my $y ;
43 my $p ;
44 EXPECT
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
50 use warnings 'misc' ;
51 our $x ;
52 my $x ;
53 our $y = my $y ;
54 our $p ;
55 package X ;
56 my $p ;
57 package main ;
58 no warnings 'misc' ;
59 our $z ;
60 my $z ;
61 our $t = my $t ;
62 our $q ;
63 package X ;
64 my $q ;
65 EXPECT
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
71 use warnings 'misc' ;
72 my $x ;
73 our $x ;
74 my $y = our $y ;
75 my $p ;
76 package X ;
77 our $p ;
78 package main ;
79 no warnings 'misc' ;
80 my $z ;
81 our $z ;
82 my $t = our $t ;
83 my $q ;
84 package X ;
85 our $q ;
86 EXPECT
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
92 use warnings 'closure' ;
93 sub x {
94       my $x;
95       sub y {
96          $x
97       }
98    }
99 EXPECT
100 Variable "$x" will not stay shared at - line 7.
101 ########
102 # pad.c
103 no warnings 'closure' ;
104 sub x {
105       my $x;
106       sub y {
107          $x
108       }
109    }
110 EXPECT
111
112 ########
113 # pad.c
114 use warnings 'closure' ;
115 sub x {
116       my $x;
117       sub y {
118          sub { $x }
119       }
120    }
121 EXPECT
122 Variable "$x" will not stay shared at - line 6.
123 ########
124 # pad.c
125 use warnings 'closure' ;
126 sub x {
127     my $x;
128     sub {
129         $x;
130         sub y {
131             $x
132         }
133     }->();
134 }
135 EXPECT
136 Variable "$x" will not stay shared at - line 9.
137 ########
138 # pad.c
139 use warnings 'closure' ;
140 my $x;
141 sub {
142     $x;
143     sub f {
144         sub { $x }->();
145     }
146 }->();
147 EXPECT
148
149 ########
150 # pad.c
151 use warnings 'closure' ;
152 sub {
153     my $x;
154     sub f { $x }
155 }->();
156 EXPECT
157 Variable "$x" is not available at - line 5.
158 ########
159 # pad.c
160 use warnings 'closure' ;
161 sub {
162     my $x;
163     eval 'sub f { $x }';
164 }->();
165 EXPECT
166
167 ########
168 # pad.c
169 use warnings 'closure' ;
170 sub {
171     my $x;
172     sub f { eval '$x' }
173 }->();
174 f();
175 EXPECT
176 Variable "$x" is not available at (eval 1) line 2.
177 ########
178 # pad.c
179 use warnings 'closure' ;
180 sub x {
181       our $x;
182       sub y {
183          $x
184       }
185    }
186 EXPECT
187
188 ########
189 # pad.c
190 # see bugid 1754
191 use warnings 'closure' ;
192 sub f {
193     my $x;
194     sub { eval '$x' };
195 }
196 f()->();
197 EXPECT
198 Variable "$x" is not available at (eval 1) line 2.
199 ########
200 use 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 }
206 f2();
207 EXPECT
208 Variable "$x" is not available at (eval 1) line 2.
209 ########
210 use warnings 'closure' ;
211 for my $x (1,2,3) {
212     sub f { eval '$x' }
213     f();
214 }
215 f();
216 EXPECT
217 Variable "$x" is not available at (eval 4) line 2.
218 ########
219 # pad.c
220 no warnings 'closure' ;
221 sub x {
222       my $x;
223       sub y {
224          sub { $x }
225       }
226    }
227 EXPECT
228
229 ########
230 use warnings 'misc' ;
231 my $x;
232 {
233     my $x;
234 }
235 EXPECT
236 ########
237 # pad.c
238 use warnings 'misc' ;
239 our $x ;
240 our $x ;
241 our $y = our $y ;
242 our $p ;
243 package X ;
244 our $p ;
245 package main ;
246 no warnings 'misc' ;
247 our $a ;
248 our $a ;
249 our $b = our $b ;
250 our $c ;
251 package X ;
252 our $c ;
253 EXPECT
254 "our" variable $x redeclared at - line 4.
255 "our" variable $y redeclared at - line 5.
256 ########
257 use warnings 'misc' ;
258 our $x;
259 {
260     our $x;
261 }
262 our $x;
263 no warnings 'misc' ;
264 our $y;
265 {
266     our $y;
267 }
268 our $y;
269 EXPECT
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 ########
274 use warnings 'misc' ;
275 our $x;
276 {
277     my $x;
278 }
279 no warnings 'misc' ;
280 our $y;
281 {
282     my $y;
283 }
284 EXPECT
285 ########
286 use warnings 'misc' ;
287 my $x;
288 {
289     our $x;
290 }
291 no warnings 'misc' ;
292 my $y;
293 {
294     our $y;
295 }
296 EXPECT
297 ########
298 use warnings 'misc' ;
299 my $x;
300 {
301     my $x;
302 }
303 no warnings 'misc' ;
304 my $y;
305 {
306     my $y;
307 }
308 EXPECT
309 ########
310 # an our var being introduced should suppress errors about global syms
311 use strict;
312 use warnings;
313 our $x unless $x;
314 EXPECT
315 ########
316 use warnings 'misc';
317 our $qunckkk;
318 our $_;
319 package clank_est;
320 our $qunckkk;
321 our $_;
322 no warnings 'misc';
323 our $ouch;
324 our $_;
325 package whack;
326 our $ouch;
327 our $_;
328 EXPECT
329 "our" variable $_ redeclared at - line 6.