Do no -warn on \_, only on \alpha.
[p5sagit/p5-mst-13.2.git] / t / pragma / warn / toke
1 toke.c  AOK
2
3     we seem to have lost a few ambiguous warnings!!
4
5  
6                 1 if $a EQ $b ;
7                 1 if $a NE $b ;
8                 1 if $a LT $b ;
9                 1 if $a GT $b ;
10                 1 if $a GE $b ;
11                 1 if $a LE $b ;
12                 $a = <<;
13                 Use of comma-less variable list is deprecated 
14                 (called 3 times via depcom)
15
16      \1 better written as $1 
17         use warnings 'syntax' ;
18         s/(abc)/\1/;
19  
20      warn(warn_nosemi) 
21      Semicolon seems to be missing
22         $a = 1
23         &time ;
24
25
26      Reversed %c= operator 
27         my $a =+ 2 ;
28         $a =- 2 ;
29         $a =* 2 ;
30         $a =% 2 ;
31         $a =& 2 ;
32         $a =. 2 ;
33         $a =^ 2 ;
34         $a =| 2 ;
35         $a =< 2 ;
36         $a =/ 2 ;
37
38      Multidimensional syntax %.*s not supported 
39         my $a = $a[1,2] ;
40
41      You need to quote \"%s\"" 
42         sub fred {} ; $SIG{TERM} = fred;
43
44      Scalar value %.*s better written as $%.*s" 
45         @a[3] = 2;
46         @a{3} = 2;
47
48      Can't use \\%c to mean $%c in expression 
49         $_ = "ab" ; s/(ab)/\1/e;
50
51      Unquoted string "abc" may clash with future reserved word at - line 3.
52      warn(warn_reserved 
53         $a = abc;
54
55      chmod() mode argument is missing initial 0 
56         chmod 3;
57
58      Possible attempt to separate words with commas 
59         @a = qw(a, b, c) ;
60
61      Possible attempt to put comments in qw() list 
62         @a = qw(a b # c) ;
63
64      umask: argument is missing initial 0 
65         umask 3;
66
67      %s (...) interpreted as function 
68         print ("")
69         printf ("")
70         sort ("")
71
72      Ambiguous use of %c{%s%s} resolved to %c%s%s 
73         $a = ${time[2]}
74         $a = ${time{2}}
75
76
77      Ambiguous use of %c{%s} resolved to %c%s
78         $a = ${time}
79         sub fred {} $a = ${fred}
80
81      Misplaced _ in number 
82         $a = 1_2;
83         $a = 1_2345_6;
84
85     Bareword \"%s\" refers to nonexistent package
86         $a = FRED:: ;
87
88     Ambiguous call resolved as CORE::%s(), qualify as such or use &
89         sub time {} 
90         my $a = time()
91
92     Unrecognized escape \\%c passed through
93         $a = "\m" ;
94
95     %s number > %s non-portable
96         my $a =  0b011111111111111111111111111111110 ;
97         $a =  0b011111111111111111111111111111111 ;
98         $a =  0b111111111111111111111111111111111 ;
99         $a =  0x0fffffffe ;
100         $a =  0x0ffffffff ;
101         $a =  0x1ffffffff ;
102         $a =  0037777777776 ;
103         $a =  0037777777777 ;
104         $a =  0047777777777 ;
105
106     Integer overflow in binary number
107         my $a =  0b011111111111111111111111111111110 ;
108         $a =  0b011111111111111111111111111111111 ;
109         $a =  0b111111111111111111111111111111111 ;
110         $a =  0x0fffffffe ;
111         $a =  0x0ffffffff ;
112         $a =  0x1ffffffff ;
113         $a =  0037777777776 ;
114         $a =  0037777777777 ;
115         $a =  0047777777777 ;
116      
117     Mandatory Warnings
118     ------------------
119     Use of "%s" without parentheses is ambiguous        [check_uni]
120         rand + 4 
121
122     Ambiguous use of -%s resolved as -&%s()             [yylex]
123         sub fred {} ; - fred ;
124
125     Precedence problem: open %.*s should be open(%.*s)  [yylex]
126         open FOO || die;
127
128     Operator or semicolon missing before %c%s           [yylex]
129     Ambiguous use of %c resolved as operator %c
130         *foo *foo
131
132 __END__
133 # toke.c 
134 use warnings 'deprecated' ;
135 1 if $a EQ $b ;
136 1 if $a NE $b ;
137 1 if $a GT $b ;
138 1 if $a LT $b ;
139 1 if $a GE $b ;
140 1 if $a LE $b ;
141 no warnings 'deprecated' ;
142 1 if $a EQ $b ;
143 1 if $a NE $b ;
144 1 if $a GT $b ;
145 1 if $a LT $b ;
146 1 if $a GE $b ;
147 1 if $a LE $b ;
148 EXPECT
149 Use of EQ is deprecated at - line 3.
150 Use of NE is deprecated at - line 4.
151 Use of GT is deprecated at - line 5.
152 Use of LT is deprecated at - line 6.
153 Use of GE is deprecated at - line 7.
154 Use of LE is deprecated at - line 8.
155 ########
156 # toke.c
157 use warnings 'deprecated' ;
158 format STDOUT =
159 @<<<  @|||  @>>>  @>>>
160 $a    $b    "abc" 'def'
161 .
162 no warnings 'deprecated' ;
163 format STDOUT =
164 @<<<  @|||  @>>>  @>>>
165 $a    $b    "abc" 'def'
166 .
167 EXPECT
168 Use of comma-less variable list is deprecated at - line 5.
169 Use of comma-less variable list is deprecated at - line 5.
170 Use of comma-less variable list is deprecated at - line 5.
171 ########
172 # toke.c
173 use warnings 'deprecated' ;
174 $a = <<;
175
176 no warnings 'deprecated' ;
177 $a = <<;
178
179 EXPECT
180 Use of bare << to mean <<"" is deprecated at - line 3.
181 ########
182 # toke.c
183 use warnings 'syntax' ;
184 s/(abc)/\1/;
185 no warnings 'syntax' ;
186 s/(abc)/\1/;
187 EXPECT
188 \1 better written as $1 at - line 3.
189 ########
190 # toke.c
191 use warnings 'semicolon' ;
192 $a = 1
193 &time ;
194 no warnings 'semicolon' ;
195 $a = 1
196 &time ;
197 EXPECT
198 Semicolon seems to be missing at - line 3.
199 ########
200 # toke.c
201 BEGIN {
202     # Scalars leaked: due to syntax errors
203     $ENV{PERL_DESTRUCT_LEVEL} = 0 unless $ENV{PERL_DESTRUCT_LEVEL} > 3;
204 }
205 use warnings 'syntax' ;
206 my $a =+ 2 ;
207 $a =- 2 ;
208 $a =* 2 ;
209 $a =% 2 ;
210 $a =& 2 ;
211 $a =. 2 ;
212 $a =^ 2 ;
213 $a =| 2 ;
214 $a =< 2 ;
215 $a =/ 2 ;
216 EXPECT
217 Reversed += operator at - line 7.
218 Reversed -= operator at - line 8.
219 Reversed *= operator at - line 9.
220 Reversed %= operator at - line 10.
221 Reversed &= operator at - line 11.
222 Reversed .= operator at - line 12.
223 Reversed ^= operator at - line 13.
224 Reversed |= operator at - line 14.
225 Reversed <= operator at - line 15.
226 syntax error at - line 12, near "=."
227 syntax error at - line 13, near "=^"
228 syntax error at - line 14, near "=|"
229 Unterminated <> operator at - line 15.
230 ########
231 # toke.c
232 BEGIN {
233     # Scalars leaked: due to syntax errors
234     $ENV{PERL_DESTRUCT_LEVEL} = 0 unless $ENV{PERL_DESTRUCT_LEVEL} > 3;
235 }
236 no warnings 'syntax' ;
237 my $a =+ 2 ;
238 $a =- 2 ;
239 $a =* 2 ;
240 $a =% 2 ;
241 $a =& 2 ;
242 $a =. 2 ;
243 $a =^ 2 ;
244 $a =| 2 ;
245 $a =< 2 ;
246 $a =/ 2 ;
247 EXPECT
248 syntax error at - line 12, near "=."
249 syntax error at - line 13, near "=^"
250 syntax error at - line 14, near "=|"
251 Unterminated <> operator at - line 15.
252 ########
253 # toke.c
254 use warnings 'syntax' ;
255 my $a = $a[1,2] ;
256 no warnings 'syntax' ;
257 my $a = $a[1,2] ;
258 EXPECT
259 Multidimensional syntax $a[1,2] not supported at - line 3.
260 ########
261 # toke.c
262 use warnings 'syntax' ;
263 sub fred {} ; $SIG{TERM} = fred;
264 no warnings 'syntax' ;
265 $SIG{TERM} = fred;
266 EXPECT
267 You need to quote "fred" at - line 3.
268 ########
269 # toke.c
270 use warnings 'syntax' ;
271 @a[3] = 2;
272 @a{3} = 2;
273 no warnings 'syntax' ;
274 @a[3] = 2;
275 @a{3} = 2;
276 EXPECT
277 Scalar value @a[3] better written as $a[3] at - line 3.
278 Scalar value @a{3} better written as $a{3} at - line 4.
279 ########
280 # toke.c
281 use warnings 'syntax' ;
282 $_ = "ab" ; 
283 s/(ab)/\1/e;
284 no warnings 'syntax' ;
285 $_ = "ab" ; 
286 s/(ab)/\1/e;
287 EXPECT
288 Can't use \1 to mean $1 in expression at - line 4.
289 ########
290 # toke.c
291 use warnings 'reserved' ;
292 $a = abc;
293 $a = { def
294
295 => 1 };
296 no warnings 'reserved' ;
297 $a = abc;
298 EXPECT
299 Unquoted string "abc" may clash with future reserved word at - line 3.
300 ########
301 # toke.c
302 use warnings 'chmod' ;
303 chmod 3;
304 no warnings 'chmod' ;
305 chmod 3;
306 EXPECT
307 chmod() mode argument is missing initial 0 at - line 3.
308 ########
309 # toke.c
310 use warnings 'qw' ;
311 @a = qw(a, b, c) ;
312 no warnings 'qw' ;
313 @a = qw(a, b, c) ;
314 EXPECT
315 Possible attempt to separate words with commas at - line 3.
316 ########
317 # toke.c
318 use warnings 'qw' ;
319 @a = qw(a b #) ;
320 no warnings 'qw' ;
321 @a = qw(a b #) ;
322 EXPECT
323 Possible attempt to put comments in qw() list at - line 3.
324 ########
325 # toke.c
326 use warnings 'umask' ;
327 umask 3;
328 no warnings 'umask' ;
329 umask 3;
330 EXPECT
331 umask: argument is missing initial 0 at - line 3.
332 ########
333 # toke.c
334 use warnings 'syntax' ;
335 print ("")
336 EXPECT
337 print (...) interpreted as function at - line 3.
338 ########
339 # toke.c
340 no warnings 'syntax' ;
341 print ("")
342 EXPECT
343
344 ########
345 # toke.c
346 use warnings 'syntax' ;
347 printf ("")
348 EXPECT
349 printf (...) interpreted as function at - line 3.
350 ########
351 # toke.c
352 no warnings 'syntax' ;
353 printf ("")
354 EXPECT
355
356 ########
357 # toke.c
358 use warnings 'syntax' ;
359 sort ("")
360 EXPECT
361 sort (...) interpreted as function at - line 3.
362 ########
363 # toke.c
364 no warnings 'syntax' ;
365 sort ("")
366 EXPECT
367
368 ########
369 # toke.c
370 use warnings 'ambiguous' ;
371 $a = ${time[2]};
372 no warnings 'ambiguous' ;
373 $a = ${time[2]};
374 EXPECT
375 Ambiguous use of ${time[...]} resolved to $time[...] at - line 3.
376 ########
377 # toke.c
378 use warnings 'ambiguous' ;
379 $a = ${time{2}};
380 EXPECT
381 Ambiguous use of ${time{...}} resolved to $time{...} at - line 3.
382 ########
383 # toke.c
384 no warnings 'ambiguous' ;
385 $a = ${time{2}};
386 EXPECT
387
388 ########
389 # toke.c
390 use warnings 'ambiguous' ;
391 $a = ${time} ;
392 no warnings 'ambiguous' ;
393 $a = ${time} ;
394 EXPECT
395 Ambiguous use of ${time} resolved to $time at - line 3.
396 ########
397 # toke.c
398 use warnings 'ambiguous' ;
399 sub fred {}
400 $a = ${fred} ;
401 no warnings 'ambiguous' ;
402 $a = ${fred} ;
403 EXPECT
404 Ambiguous use of ${fred} resolved to $fred at - line 4.
405 ########
406 # toke.c
407 use warnings 'syntax' ;
408 $a = 1_2;
409 $a = 1_2345_6;
410 no warnings 'syntax' ;
411 $a = 1_2;
412 $a = 1_2345_6;
413 EXPECT
414 Misplaced _ in number at - line 3.
415 Misplaced _ in number at - line 4.
416 Misplaced _ in number at - line 4.
417 ########
418 # toke.c
419 use warnings 'bareword' ;
420 #line 25 "bar"
421 $a = FRED:: ;
422 no warnings 'bareword' ;
423 #line 25 "bar"
424 $a = FRED:: ;
425 EXPECT
426 Bareword "FRED::" refers to nonexistent package at bar line 25.
427 ########
428 # toke.c
429 use warnings 'ambiguous' ;
430 sub time {}
431 my $a = time() ;
432 no warnings 'ambiguous' ;
433 my $b = time() ;
434 EXPECT
435 Ambiguous call resolved as CORE::time(), qualify as such or use & at - line 4.
436 ########
437 # toke.c
438 use warnings ;
439 eval <<'EOE';
440 #  line 30 "foo"
441 warn "yelp";
442 {
443   $_ = " \x{123} " ;
444 }
445 EOE
446 EXPECT
447 yelp at foo line 30.
448 ########
449 # toke.c
450 my $a = rand + 4 ;
451 EXPECT
452 Warning: Use of "rand" without parens is ambiguous at - line 2.
453 ########
454 # toke.c
455 $^W = 0 ;
456 my $a = rand + 4 ;
457 {
458     no warnings 'ambiguous' ;
459     $a = rand + 4 ;
460     use warnings 'ambiguous' ;
461     $a = rand + 4 ;
462 }
463 $a = rand + 4 ;
464 EXPECT
465 Warning: Use of "rand" without parens is ambiguous at - line 3.
466 Warning: Use of "rand" without parens is ambiguous at - line 8.
467 Warning: Use of "rand" without parens is ambiguous at - line 10.
468 ########
469 # toke.c
470 sub fred {};
471 -fred ;
472 EXPECT
473 Ambiguous use of -fred resolved as -&fred() at - line 3.
474 ########
475 # toke.c
476 $^W = 0 ;
477 sub fred {} ;
478 -fred ;
479 {
480     no warnings 'ambiguous' ;
481     -fred ;
482     use warnings 'ambiguous' ;
483     -fred ;
484 }
485 -fred ;
486 EXPECT
487 Ambiguous use of -fred resolved as -&fred() at - line 4.
488 Ambiguous use of -fred resolved as -&fred() at - line 9.
489 Ambiguous use of -fred resolved as -&fred() at - line 11.
490 ########
491 # toke.c
492 open FOO || time;
493 EXPECT
494 Precedence problem: open FOO should be open(FOO) at - line 2.
495 ########
496 # toke.c
497 $^W = 0 ;
498 open FOO || time;
499 {
500     no warnings 'precedence' ;
501     open FOO || time;
502     use warnings 'precedence' ;
503     open FOO || time;
504 }
505 open FOO || time;
506 EXPECT
507 Precedence problem: open FOO should be open(FOO) at - line 3.
508 Precedence problem: open FOO should be open(FOO) at - line 8.
509 Precedence problem: open FOO should be open(FOO) at - line 10.
510 ########
511 # toke.c
512 $^W = 0 ;
513 *foo *foo ;
514 {
515     no warnings 'ambiguous' ;
516     *foo *foo ;
517     use warnings 'ambiguous' ;
518     *foo *foo ;
519 }
520 *foo *foo ;
521 EXPECT
522 Operator or semicolon missing before *foo at - line 3.
523 Ambiguous use of * resolved as operator * at - line 3.
524 Operator or semicolon missing before *foo at - line 8.
525 Ambiguous use of * resolved as operator * at - line 8.
526 Operator or semicolon missing before *foo at - line 10.
527 Ambiguous use of * resolved as operator * at - line 10.
528 ########
529 # toke.c
530 use warnings 'misc' ;
531 my $a = "\m" ;
532 my $b = "\_" ;
533 no warnings 'misc' ;
534 $a = "\m" ;
535 $b = "\_" ;
536 EXPECT
537 Unrecognized escape \m passed through at - line 3.
538 ########
539 # toke.c
540 use warnings 'portable' ;
541 my $a =  0b011111111111111111111111111111110 ;
542    $a =  0b011111111111111111111111111111111 ;
543    $a =  0b111111111111111111111111111111111 ;
544    $a =  0x0fffffffe ;
545    $a =  0x0ffffffff ;
546    $a =  0x1ffffffff ;
547    $a =  0037777777776 ;
548    $a =  0037777777777 ;
549    $a =  0047777777777 ;
550 no warnings 'portable' ;
551    $a =  0b011111111111111111111111111111110 ;
552    $a =  0b011111111111111111111111111111111 ;
553    $a =  0b111111111111111111111111111111111 ;
554    $a =  0x0fffffffe ;
555    $a =  0x0ffffffff ;
556    $a =  0x1ffffffff ;
557    $a =  0037777777776 ;
558    $a =  0037777777777 ;
559    $a =  0047777777777 ;
560 EXPECT
561 Binary number > 0b11111111111111111111111111111111 non-portable at - line 5.
562 Hexadecimal number > 0xffffffff non-portable at - line 8.
563 Octal number > 037777777777 non-portable at - line 11.
564 ########
565 # toke.c
566 use warnings 'overflow' ;
567 my $a =  0b011111111111111111111111111111110 ;
568    $a =  0b011111111111111111111111111111111 ;
569    $a =  0b10000000000000000000000000000000000000000000000000000000000000000 ;
570    $a =  0x0fffffffe ;
571    $a =  0x0ffffffff ;
572    $a =  0x10000000000000000 ;
573    $a =  0037777777776 ;
574    $a =  0037777777777 ;
575    $a =  002000000000000000000000;
576 no warnings 'overflow' ;
577    $a =  0b011111111111111111111111111111110 ;
578    $a =  0b011111111111111111111111111111111 ;
579    $a =  0b10000000000000000000000000000000000000000000000000000000000000000 ;
580    $a =  0x0fffffffe ;
581    $a =  0x0ffffffff ;
582    $a =  0x10000000000000000 ;
583    $a =  0037777777776 ;
584    $a =  0037777777777 ;
585    $a =  002000000000000000000000;
586 EXPECT
587 Integer overflow in binary number at - line 5.
588 Integer overflow in hexadecimal number at - line 8.
589 Integer overflow in octal number at - line 11.
590 ########
591 # toke.c
592 use warnings 'ambiguous';
593 "@mjd_previously_unused_array";        
594 no warnings 'ambiguous';
595 "@mjd_previously_unused_array";        
596 EXPECT
597 Possible unintended interpolation of @mjd_previously_unused_array in string at - line 3.