This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
7810287a3a0e5a1887ba2d626dbd5b3adc0c90f1
[perl5.git] / t / lib / warnings / 2use
1 Check lexical warnings functionality
2
3 TODO
4   check that the warning hierarchy works.
5
6 __END__
7
8 #  check illegal category is caught
9 use warnings 'this-should-never-be-a-warning-category' ;
10 EXPECT
11 Unknown warnings category 'this-should-never-be-a-warning-category' at - line 3
12 BEGIN failed--compilation aborted at - line 3.
13 ########
14
15 # Check compile time scope of pragma
16 use warnings 'syntax' ;
17 {
18     no warnings ;
19     my $a =+ 1 ;
20 }
21 my $a =+ 1 ;
22 EXPECT
23 Reversed += operator at - line 8.
24 ########
25
26 # Check compile time scope of pragma
27 no warnings;
28 {
29     use warnings 'syntax' ;
30     my $a =+ 1 ;
31 }
32 my $a =+ 1 ;
33 EXPECT
34 Reversed += operator at - line 6.
35 ########
36
37 # Check runtime scope of pragma
38 use warnings 'uninitialized' ;
39 {
40     no warnings ;
41     my $b ; chop $b ;
42 }
43 my $b ; chop $b ;
44 EXPECT
45 Use of uninitialized value $b in scalar chop at - line 8.
46 ########
47
48 # Check runtime scope of pragma
49 no warnings ;
50 {
51     use warnings 'uninitialized' ;
52     my $b ; chop $b ;
53 }
54 my $b ; chop $b ;
55 EXPECT
56 Use of uninitialized value $b in scalar chop at - line 6.
57 ########
58
59 # Check runtime scope of pragma
60 no warnings ;
61 {
62     use warnings 'uninitialized' ;
63     $a = sub { my $b ; chop $b ; }
64 }
65 &$a ;
66 EXPECT
67 Use of uninitialized value $b in scalar chop at - line 6.
68 ########
69
70 use warnings 'syntax' ;
71 my $a =+ 1 ;
72 EXPECT
73 Reversed += operator at - line 3.
74 ########
75
76 --FILE-- abc
77 my $a =+ 1 ;
78 1;
79 --FILE-- 
80 use warnings 'syntax' ;
81 require "./abc";
82 EXPECT
83
84 ########
85
86 --FILE-- abc
87 use warnings 'syntax' ;
88 1;
89 --FILE-- 
90 require "./abc";
91 my $a =+ 1 ;
92 EXPECT
93
94 ########
95
96 --FILE-- abc
97 use warnings 'syntax' ;
98 my $a =+ 1 ;
99 1;
100 --FILE-- 
101 use warnings 'uninitialized' ;
102 require "./abc";
103 my $a ; chop $a ;
104 EXPECT
105 Reversed += operator at ./abc line 2.
106 Use of uninitialized value $a in scalar chop at - line 3.
107 ########
108
109 --FILE-- abc.pm
110 use warnings 'syntax' ;
111 my $a =+ 1 ;
112 1;
113 --FILE-- 
114 use warnings 'uninitialized' ;
115 use abc;
116 my $a ; chop $a ;
117 EXPECT
118 Reversed += operator at abc.pm line 2.
119 Use of uninitialized value $a in scalar chop at - line 3.
120 ########
121
122 # Check scope of pragma with eval
123 use warnings;
124 {
125     no warnings ;
126     eval {
127         my $b ; chop $b ;
128     }; print STDERR $@ ;
129     my $b ; chop $b ;
130 }
131 EXPECT
132
133 ########
134
135 # Check scope of pragma with eval
136 use warnings;
137 {
138     no warnings ;
139     eval {
140         use warnings 'uninitialized' ;
141         my $b ; chop $b ;
142     }; print STDERR $@ ;
143     my $b ; chop $b ;
144 }
145 EXPECT
146 Use of uninitialized value $b in scalar chop at - line 8.
147 ########
148
149 # Check scope of pragma with eval
150 no warnings;
151 {
152     use warnings 'uninitialized' ;
153     eval {
154         my $b ; chop $b ;
155     }; print STDERR $@ ;
156     my $b ; chop $b ;
157 }
158 EXPECT
159 Use of uninitialized value $b in scalar chop at - line 7.
160 Use of uninitialized value $b in scalar chop at - line 9.
161 ########
162
163 # Check scope of pragma with eval
164 no warnings;
165 {
166     use warnings 'uninitialized' ;
167     eval {
168         no warnings ;
169         my $b ; chop $b ;
170     }; print STDERR $@ ;
171     my $b ; chop $b ;
172 }
173 EXPECT
174 Use of uninitialized value $b in scalar chop at - line 10.
175 ########
176
177 # Check scope of pragma with eval
178 use warnings;
179 {
180     no warnings ;
181     eval {
182         my $a =+ 1 ;
183     }; print STDERR $@ ;
184     my $a =+ 1 ;
185 }
186 EXPECT
187
188 ########
189
190 # Check scope of pragma with eval
191 use warnings;
192 {
193     no warnings ;
194     eval {
195         use warnings 'syntax' ;
196         my $a =+ 1 ;
197     }; print STDERR $@ ;
198     my $a =+ 1 ;
199 }
200 EXPECT
201 Reversed += operator at - line 8.
202 ########
203
204 # Check scope of pragma with eval
205 no warnings;
206 {
207     use warnings 'syntax' ;
208     eval {
209         my $a =+ 1 ;
210     }; print STDERR $@ ;
211     my $a =+ 1 ;
212 }
213 EXPECT
214 Reversed += operator at - line 7.
215 Reversed += operator at - line 9.
216 ########
217
218 # Check scope of pragma with eval
219 no warnings;
220 {
221     use warnings 'syntax' ;
222     eval {
223         no warnings ;
224         my $a =+ 1 ;
225     }; print STDERR $@ ;
226     my $a =+ 1 ;
227 }
228 EXPECT
229 Reversed += operator at - line 10.
230 ########
231
232 # Check scope of pragma with eval
233 use warnings;
234 {
235     no warnings ;
236     eval '
237         my $b ; chop $b ;
238     '; print STDERR $@ ;
239     my $b ; chop $b ;
240 }
241 EXPECT
242
243 ########
244
245 # Check scope of pragma with eval
246 use warnings;
247 {
248     no warnings ;
249     eval q[ 
250         use warnings 'uninitialized' ;
251         my $b ; chop $b ;
252     ]; print STDERR $@;
253     my $b ; chop $b ;
254 }
255 EXPECT
256 Use of uninitialized value $b in scalar chop at (eval 1) line 3.
257 ########
258
259 # Check scope of pragma with eval
260 no warnings;
261 {
262     use warnings 'uninitialized' ;
263     eval '
264         my $b ; chop $b ;
265     '; print STDERR $@ ;
266     my $b ; chop $b ;
267 }
268 EXPECT
269 Use of uninitialized value $b in scalar chop at (eval 1) line 2.
270 Use of uninitialized value $b in scalar chop at - line 9.
271 ########
272
273 # Check scope of pragma with eval
274 no warnings;
275 {
276     use warnings 'uninitialized' ;
277     eval '
278         no warnings ;
279         my $b ; chop $b ;
280     '; print STDERR $@ ;
281     my $b ; chop $b ;
282 }
283 EXPECT
284 Use of uninitialized value $b in scalar chop at - line 10.
285 ########
286
287 # Check scope of pragma with eval
288 use warnings;
289 {
290     no warnings ;
291     eval '
292         my $a =+ 1 ;
293     '; print STDERR $@ ;
294     my $a =+ 1 ;
295 }
296 EXPECT
297
298 ########
299
300 # Check scope of pragma with eval
301 use warnings;
302 {
303     no warnings ;
304     eval q[ 
305         use warnings 'syntax' ;
306         my $a =+ 1 ;
307     ]; print STDERR $@;
308     my $a =+ 1 ;
309 }
310 EXPECT
311 Reversed += operator at (eval 1) line 3.
312 ########
313
314 # Check scope of pragma with eval
315 no warnings;
316 {
317     use warnings 'syntax' ;
318     eval '
319         my $a =+ 1 ;
320     '; print STDERR $@;
321     my $a =+ 1 ;
322 }
323 EXPECT
324 Reversed += operator at - line 9.
325 Reversed += operator at (eval 1) line 2.
326 ########
327
328 # Check scope of pragma with eval
329 no warnings;
330 {
331     use warnings 'syntax' ;
332     eval '
333         no warnings ;
334         my $a =+ 1 ;
335     '; print STDERR $@;
336     my $a =+ 1 ;
337 }
338 EXPECT
339 Reversed += operator at - line 10.
340 ########
341
342 # Check the additive nature of the pragma
343 my $a =+ 1 ;
344 my $a ; chop $a ;
345 use warnings 'syntax' ;
346 $a =+ 1 ;
347 my $b ; chop $b ;
348 use warnings 'uninitialized' ;
349 my $c ; chop $c ;
350 no warnings 'syntax' ;
351 $a =+ 1 ;
352 EXPECT
353 Reversed += operator at - line 6.
354 Use of uninitialized value $c in scalar chop at - line 9.