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