This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Don’t mention pkg in proto warnings for lex subs
[perl5.git] / t / lib / warnings / 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      Possible attempt to separate words with commas 
50         @a = qw(a, b, c) ;
51
52      Possible attempt to put comments in qw() list 
53         @a = qw(a b # c) ;
54
55      %s (...) interpreted as function 
56         print ("")
57         printf ("")
58         sort ("")
59
60      Ambiguous use of %c{%s%s} resolved to %c%s%s 
61         $a = ${time[2]}
62         $a = ${time{2}}
63
64
65      Ambiguous use of %c{%s} resolved to %c%s
66         $a = ${time}
67         sub fred {} $a = ${fred}
68
69      Misplaced _ in number 
70         $a = 1_2;
71         $a = 1_2345_6;
72
73     Bareword \"%s\" refers to nonexistent package
74         $a = FRED:: ;
75
76     Ambiguous call resolved as CORE::%s(), qualify as such or use &
77         sub time {} 
78         my $a = time()
79
80     Unrecognized escape \\%c passed through
81         $a = "\m" ;
82
83     Useless use of \\E.
84         $a = "abcd\E" ;
85
86     %s number > %s non-portable
87         my $a =  0b011111111111111111111111111111110 ;
88         $a =  0b011111111111111111111111111111111 ;
89         $a =  0b111111111111111111111111111111111 ;
90         $a =  0x0fffffffe ;
91         $a =  0x0ffffffff ;
92         $a =  0x1ffffffff ;
93         $a =  0037777777776 ;
94         $a =  0037777777777 ;
95         $a =  0047777777777 ;
96
97     Integer overflow in binary number
98         my $a =  0b011111111111111111111111111111110 ;
99         $a =  0b011111111111111111111111111111111 ;
100         $a =  0b111111111111111111111111111111111 ;
101         $a =  0x0fffffffe ;
102         $a =  0x0ffffffff ;
103         $a =  0x1ffffffff ;
104         $a =  0037777777776 ;
105         $a =  0037777777777 ;
106         $a =  0047777777777 ;
107
108     dump() better written as CORE::dump()
109
110     Use of /c modifier is meaningless without /g     
111
112     Use of /c modifier is meaningless in s///
113
114     Mandatory Warnings
115     ------------------
116     Use of "%s" without parentheses is ambiguous        [check_uni]
117         rand + 4 
118
119     Ambiguous use of -%s resolved as -&%s()             [yylex]
120         sub fred {} ; - fred ;
121
122     Precedence problem: open %.*s should be open(%.*s)  [yylex]
123         open FOO || die;
124
125     Operator or semicolon missing before %c%s           [yylex]
126     Ambiguous use of %c resolved as operator %c
127         *foo *foo
128
129 __END__
130 # toke.c 
131 format STDOUT =
132 @<<<  @|||  @>>>  @>>>
133 $a    $b    "abc" 'def'
134 .
135 no warnings 'deprecated' ;
136 format STDOUT =
137 @<<<  @|||  @>>>  @>>>
138 $a    $b    "abc" 'def'
139 .
140 EXPECT
141 Use of comma-less variable list is deprecated at - line 4.
142 Use of comma-less variable list is deprecated at - line 4.
143 Use of comma-less variable list is deprecated at - line 4.
144 ########
145 # toke.c
146 $a = <<;
147
148 no warnings 'deprecated' ;
149 $a = <<;
150
151 EXPECT
152 Use of bare << to mean <<"" is deprecated at - line 2.
153 ########
154 # toke.c
155 $a =~ m/$foo/eq;
156 $a =~ s/$foo/fool/seq;
157
158 EXPECT
159 OPTION fatal
160 Unknown regexp modifier "/e" at - line 2, near "=~ "
161 Unknown regexp modifier "/q" at - line 2, near "=~ "
162 Unknown regexp modifier "/q" at - line 3, near "=~ "
163 Execution of - aborted due to compilation errors.
164 ########
165 # toke.c
166 use utf8;
167 use open qw( :utf8 :std );
168 $a =~ m/$foo/eネq;
169 $a =~ s/$foo/fool/seネq;
170
171 EXPECT
172 OPTION fatal
173 Unknown regexp modifier "/e" at - line 4, near "=~ "
174 Unknown regexp modifier "/ネ" at - line 4, near "=~ "
175 Unknown regexp modifier "/q" at - line 4, near "=~ "
176 Unknown regexp modifier "/ネ" at - line 5, near "=~ "
177 Unknown regexp modifier "/q" at - line 5, near "=~ "
178 Execution of - aborted due to compilation errors.
179 ########
180 # toke.c
181 use warnings 'syntax' ;
182 s/(abc)/\1/;
183 no warnings 'syntax' ;
184 s/(abc)/\1/;
185 EXPECT
186 \1 better written as $1 at - line 3.
187 ########
188 # toke.c
189 use warnings 'semicolon' ;
190 $a = 1
191 &time ;
192 no warnings 'semicolon' ;
193 $a = 1
194 &time ;
195 EXPECT
196 Semicolon seems to be missing at - line 3.
197 ########
198 # toke.c
199 use 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 Reversed += operator at - line 3.
212 Reversed -= operator at - line 4.
213 Reversed *= operator at - line 5.
214 Reversed %= operator at - line 6.
215 Reversed &= operator at - line 7.
216 Reversed .= operator at - line 8.
217 Reversed ^= operator at - line 9.
218 Reversed |= operator at - line 10.
219 Reversed <= operator at - line 11.
220 syntax error at - line 8, near "=."
221 syntax error at - line 9, near "=^"
222 syntax error at - line 10, near "=|"
223 Unterminated <> operator at - line 11.
224 ########
225 # toke.c
226 no warnings 'syntax' ;
227 my $a =+ 2 ;
228 $a =- 2 ;
229 $a =* 2 ;
230 $a =% 2 ;
231 $a =& 2 ;
232 $a =. 2 ;
233 $a =^ 2 ;
234 $a =| 2 ;
235 $a =< 2 ;
236 $a =/ 2 ;
237 EXPECT
238 syntax error at - line 8, near "=."
239 syntax error at - line 9, near "=^"
240 syntax error at - line 10, near "=|"
241 Unterminated <> operator at - line 11.
242 ########
243 # toke.c
244 use warnings 'syntax' ;
245 my $a = $a[1,2] ;
246 no warnings 'syntax' ;
247 my $a = $a[1,2] ;
248 EXPECT
249 Multidimensional syntax $a[1,2] not supported at - line 3.
250 ########
251 # toke.c
252 use warnings 'syntax' ;
253 sub fred {} ; $SIG{TERM} = fred;
254 no warnings 'syntax' ;
255 $SIG{TERM} = fred;
256 EXPECT
257 You need to quote "fred" at - line 3.
258 ########
259 # toke.c
260 use utf8;
261 use open qw( :utf8 :std );
262 use warnings 'syntax' ;
263 sub frèd {} ; $SIG{TERM} = frèd;
264 no warnings 'syntax' ;
265 $SIG{TERM} = frèd;
266 EXPECT
267 You need to quote "frèd" at - line 5.
268 ########
269 # toke.c
270 use utf8;
271 use open qw( :utf8 :std );
272 use warnings 'syntax' ;
273 sub ふれど {} ; $SIG{TERM} = ふれど;
274 no warnings 'syntax' ;
275 $SIG{TERM} = ふれど;
276 EXPECT
277 You need to quote "ふれど" at - line 5.
278 ########
279 # toke.c
280 use warnings 'syntax' ;
281 @a[3] = 2;
282 @a{3} = 2;
283 no warnings 'syntax' ;
284 @a[3] = 2;
285 @a{3} = 2;
286 EXPECT
287 Scalar value @a[3] better written as $a[3] at - line 3.
288 Scalar value @a{3} better written as $a{3} at - line 4.
289 ########
290 # toke.c
291 use utf8;
292 use open qw( :utf8 :std );
293 use warnings 'syntax' ;
294 @à[3] = 2;
295 @à{3} = 2;
296 no warnings 'syntax' ;
297 @à[3] = 2;
298 @à{3} = 2;
299 EXPECT
300 Scalar value @à[3] better written as $à[3] at - line 5.
301 Scalar value @à{3} better written as $à{3} at - line 6.
302 ########
303 # toke.c
304 use utf8;
305 use open qw( :utf8 :std );
306 use warnings 'syntax' ;
307 @ぁ[3] = 2;
308 @ぁ{3} = 2;
309 no warnings 'syntax' ;
310 @ぁ[3] = 2;
311 @ぁ{3} = 2;
312 EXPECT
313 Scalar value @ぁ[3] better written as $ぁ[3] at - line 5.
314 Scalar value @ぁ{3} better written as $ぁ{3} at - line 6.
315 ########
316 # toke.c
317 use warnings 'syntax' ;
318 $_ = "ab" ; 
319 s/(ab)/\1/e;
320 no warnings 'syntax' ;
321 $_ = "ab" ; 
322 s/(ab)/\1/e;
323 EXPECT
324 Can't use \1 to mean $1 in expression at - line 4.
325 ########
326 # toke.c
327 use warnings 'reserved' ;
328 $a = abc;
329 $a = { def
330
331 => 1 };
332 no warnings 'reserved' ;
333 $a = abc;
334 EXPECT
335 Unquoted string "abc" may clash with future reserved word at - line 3.
336 ########
337 # toke.c
338 use warnings 'qw' ;
339 @a = qw(a, b, c) ;
340 no warnings 'qw' ;
341 @a = qw(a, b, c) ;
342 EXPECT
343 Possible attempt to separate words with commas at - line 3.
344 ########
345 # toke.c
346 use warnings 'qw' ;
347 @a = qw(a b c # #) ;
348 no warnings 'qw' ;
349 @a = qw(a b c # #) ;
350 EXPECT
351 Possible attempt to put comments in qw() list at - line 3.
352 ########
353 # toke.c
354 use warnings 'qw' ;
355 @a = qw(a, b, c # #) ;
356 no warnings 'qw' ;
357 @a = qw(a, b, c # #) ;
358 EXPECT
359 Possible attempt to separate words with commas at - line 3.
360 Possible attempt to put comments in qw() list at - line 3.
361 ########
362 # toke.c
363 use warnings 'syntax' ;
364 print ("");
365 print ("") and $x = 1;
366 print ("") or die;
367 print ("") // die;
368 print (1+2) * 3 if 0; # only this one should warn
369 print (1+2) if 0;
370 EXPECT
371 print (...) interpreted as function at - line 7.
372 ########
373 # toke.c
374 no warnings 'syntax' ;
375 print ("")
376 EXPECT
377
378 ########
379 # toke.c
380 use warnings 'syntax' ;
381 printf ("");
382 printf ("") . '';
383 EXPECT
384 printf (...) interpreted as function at - line 4.
385 ########
386 # toke.c
387 no warnings 'syntax' ;
388 printf ("")
389 EXPECT
390
391 ########
392 # toke.c
393 use warnings 'syntax' ;
394 sort ("");
395 sort ("") . '';
396 EXPECT
397 sort (...) interpreted as function at - line 4.
398 ########
399 # toke.c
400 no warnings 'syntax' ;
401 sort ("")
402 EXPECT
403
404 ########
405 # toke.c
406 use warnings 'ambiguous' ;
407 $a = ${time[2]};
408 no warnings 'ambiguous' ;
409 $a = ${time[2]};
410 EXPECT
411 Ambiguous use of ${time[...]} resolved to $time[...] at - line 3.
412 ########
413 # toke.c
414 use warnings 'ambiguous' ;
415 $a = ${time{2}};
416 EXPECT
417 Ambiguous use of ${time{...}} resolved to $time{...} at - line 3.
418 ########
419 # toke.c
420 no warnings 'ambiguous' ;
421 $a = ${time{2}};
422 EXPECT
423
424 ########
425 # toke.c
426 use warnings 'ambiguous' ;
427 $a = ${time} ;
428 no warnings 'ambiguous' ;
429 $a = ${time} ;
430 EXPECT
431 Ambiguous use of ${time} resolved to $time at - line 3.
432 ########
433 # toke.c
434 use warnings 'ambiguous' ;
435 sub fred {}
436 $a = ${fred} ;
437 no warnings 'ambiguous' ;
438 $a = ${fred} ;
439 EXPECT
440 Ambiguous use of ${fred} resolved to $fred at - line 4.
441 ########
442 # toke.c
443 use warnings 'syntax' ;
444 $a = _123; print "$a\n";                #( 3    string)
445 $a = 1_23; print "$a\n";
446 $a = 12_3; print "$a\n";
447 $a = 123_; print "$a\n";                #  6
448 $a = _+123; print "$a\n";               #  7    string)
449 $a = +_123; print "$a\n";               #( 8    string)
450 $a = +1_23; print "$a\n";
451 $a = +12_3; print "$a\n";
452 $a = +123_; print "$a\n";               # 11
453 $a = _-123; print "$a\n";               #(12    string)
454 $a = -_123; print "$a\n";               #(13    string)
455 $a = -1_23; print "$a\n";
456 $a = -12_3; print "$a\n";
457 $a = -123_; print "$a\n";               # 16
458 $a = 123._456; print "$a\n";            # 17
459 $a = 123.4_56; print "$a\n";
460 $a = 123.45_6; print "$a\n";
461 $a = 123.456_; print "$a\n";            # 20
462 $a = +123._456; print "$a\n";           # 21
463 $a = +123.4_56; print "$a\n";   
464 $a = +123.45_6; print "$a\n";   
465 $a = +123.456_; print "$a\n";           # 24
466 $a = -123._456; print "$a\n";           # 25
467 $a = -123.4_56; print "$a\n";   
468 $a = -123.45_6; print "$a\n";
469 $a = -123.456_; print "$a\n";           # 28
470 $a = 123.456E_12; printf("%.0f\n", $a); # 29
471 $a = 123.456E1_2; printf("%.0f\n", $a);
472 $a = 123.456E12_; printf("%.0f\n", $a); # 31
473 $a = 123.456E_+12; printf("%.0f\n", $a);        # 32
474 $a = 123.456E+_12; printf("%.0f\n", $a);        # 33
475 $a = 123.456E+1_2; printf("%.0f\n", $a);
476 $a = 123.456E+12_; printf("%.0f\n", $a);        # 35
477 $a = 123.456E_-12; print "$a\n";        # 36
478 $a = 123.456E-_12; print "$a\n";        # 37
479 $a = 123.456E-1_2; print "$a\n";
480 $a = 123.456E-12_; print "$a\n";        # 39
481 $a = 1__23; print "$a\n";               # 40
482 $a = 12.3__4; print "$a\n";             # 41
483 $a = 12.34e1__2; printf("%.0f\n", $a);  # 42
484 no warnings 'syntax' ;
485 $a = _123; print "$a\n";
486 $a = 1_23; print "$a\n";
487 $a = 12_3; print "$a\n";
488 $a = 123_; print "$a\n";
489 $a = _+123; print "$a\n";
490 $a = +_123; print "$a\n";
491 $a = +1_23; print "$a\n";
492 $a = +12_3; print "$a\n";
493 $a = +123_; print "$a\n";
494 $a = _-123; print "$a\n";
495 $a = -_123; print "$a\n";
496 $a = -1_23; print "$a\n";
497 $a = -12_3; print "$a\n";
498 $a = -123_; print "$a\n";
499 $a = 123._456; print "$a\n";
500 $a = 123.4_56; print "$a\n";
501 $a = 123.45_6; print "$a\n";
502 $a = 123.456_; print "$a\n";
503 $a = +123._456; print "$a\n";
504 $a = +123.4_56; print "$a\n";
505 $a = +123.45_6; print "$a\n";
506 $a = +123.456_; print "$a\n";
507 $a = -123._456; print "$a\n";
508 $a = -123.4_56; print "$a\n";
509 $a = -123.45_6; print "$a\n";
510 $a = -123.456_; print "$a\n";
511 $a = 123.456E_12; printf("%.0f\n", $a);
512 $a = 123.456E1_2; printf("%.0f\n", $a);
513 $a = 123.456E12_; printf("%.0f\n", $a);
514 $a = 123.456E_+12; printf("%.0f\n", $a);
515 $a = 123.456E+_12; printf("%.0f\n", $a);
516 $a = 123.456E+1_2; printf("%.0f\n", $a);
517 $a = 123.456E+12_; printf("%.0f\n", $a);
518 $a = 123.456E_-12; print "$a\n";
519 $a = 123.456E-_12; print "$a\n";
520 $a = 123.456E-1_2; print "$a\n";
521 $a = 123.456E-12_; print "$a\n";
522 $a = 1__23; print "$a\n";
523 $a = 12.3__4; print "$a\n";
524 $a = 12.34e1__2; printf("%.0f\n", $a);
525 EXPECT
526 OPTIONS regex
527 Misplaced _ in number at - line 6.
528 Misplaced _ in number at - line 11.
529 Misplaced _ in number at - line 16.
530 Misplaced _ in number at - line 17.
531 Misplaced _ in number at - line 20.
532 Misplaced _ in number at - line 21.
533 Misplaced _ in number at - line 24.
534 Misplaced _ in number at - line 25.
535 Misplaced _ in number at - line 28.
536 Misplaced _ in number at - line 29.
537 Misplaced _ in number at - line 31.
538 Misplaced _ in number at - line 32.
539 Misplaced _ in number at - line 33.
540 Misplaced _ in number at - line 35.
541 Misplaced _ in number at - line 36.
542 Misplaced _ in number at - line 37.
543 Misplaced _ in number at - line 39.
544 Misplaced _ in number at - line 40.
545 Misplaced _ in number at - line 41.
546 Misplaced _ in number at - line 42.
547 _123
548 123
549 123
550 123
551 123
552 _123
553 123
554 123
555 123
556 -123
557 -_123
558 -123
559 -123
560 -123
561 123.456
562 123.456
563 123.456
564 123.456
565 123.456
566 123.456
567 123.456
568 123.456
569 -123.456
570 -123.456
571 -123.456
572 -123.456
573 123456000000000
574 123456000000000
575 123456000000000
576 123456000000000
577 123456000000000
578 123456000000000
579 123456000000000
580 1.23456e-0?10
581 1.23456e-0?10
582 1.23456e-0?10
583 1.23456e-0?10
584 123
585 12.34
586 12340000000000
587 _123
588 123
589 123
590 123
591 123
592 _123
593 123
594 123
595 123
596 -123
597 -_123
598 -123
599 -123
600 -123
601 123.456
602 123.456
603 123.456
604 123.456
605 123.456
606 123.456
607 123.456
608 123.456
609 -123.456
610 -123.456
611 -123.456
612 -123.456
613 123456000000000
614 123456000000000
615 123456000000000
616 123456000000000
617 123456000000000
618 123456000000000
619 123456000000000
620 1.23456e-0?10
621 1.23456e-0?10
622 1.23456e-0?10
623 1.23456e-0?10
624 123
625 12.34
626 12340000000000
627 ########
628 # toke.c
629 use warnings 'bareword' ;
630 #line 25 "bar"
631 $a = FRED:: ;
632 no warnings 'bareword' ;
633 #line 25 "bar"
634 $a = FRED:: ;
635 EXPECT
636 Bareword "FRED::" refers to nonexistent package at bar line 25.
637 ########
638 # toke.c
639 use utf8;
640 use open qw( :utf8 :std );
641 use warnings 'bareword' ;
642 #line 25 "bar"
643 $a = FRÈD:: ;
644 no warnings 'bareword' ;
645 #line 25 "bar"
646 $a = FRÈD:: ;
647 EXPECT
648 Bareword "FRÈD::" refers to nonexistent package at bar line 25.
649 ########
650 # toke.c
651 use utf8;
652 use open qw( :utf8 :std );
653 use warnings 'bareword' ;
654 #line 25 "bar"
655 $a = ϞϞϞ:: ;
656 no warnings 'bareword' ;
657 #line 25 "bar"
658 $a = ϞϞϞ:: ;
659 EXPECT
660 Bareword "ϞϞϞ::" refers to nonexistent package at bar line 25.
661 ########
662 # toke.c
663 use warnings 'ambiguous' ;
664 sub time {}
665 my $a = time() ;
666 no warnings 'ambiguous' ;
667 my $b = time() ;
668 EXPECT
669 Ambiguous call resolved as CORE::time(), qualify as such or use & at - line 4.
670 ########
671 # toke.c
672 use warnings ;
673 eval <<'EOE';
674 #  line 30 "foo"
675 warn "yelp";
676 {
677   $_ = " \x{123} " ;
678 }
679 EOE
680 EXPECT
681 yelp at foo line 30.
682 ########
683 # toke.c
684 my $a = rand + 4 ;
685 $a = rand *^H ;
686 $a = rand $^H ;
687 EXPECT
688 Warning: Use of "rand" without parentheses is ambiguous at - line 2.
689 ########
690 # toke.c
691 $^W = 0 ;
692 my $a = rand + 4 ;
693 {
694     no warnings 'ambiguous' ;
695     $a = rand + 4 ;
696     use warnings 'ambiguous' ;
697     $a = rand + 4 ;
698 }
699 $a = rand + 4 ;
700 EXPECT
701 Warning: Use of "rand" without parentheses is ambiguous at - line 3.
702 Warning: Use of "rand" without parentheses is ambiguous at - line 8.
703 Warning: Use of "rand" without parentheses is ambiguous at - line 10.
704 ########
705 # [perl #97110]
706 sub myrand(;$) { }
707 sub whatever($) { }
708 my $a = myrand + 4 ;
709 my $b = whatever + 4 ;
710 EXPECT
711 Warning: Use of "myrand" without parentheses is ambiguous at - line 4.
712 ########
713 # toke.c
714 use warnings "ambiguous";
715 print for keys %+; # should not warn
716 EXPECT
717 ########
718 # toke.c
719 sub fred {};
720 -fred ;
721 EXPECT
722 Ambiguous use of -fred resolved as -&fred() at - line 3.
723 ########
724 # toke.c
725 $^W = 0 ;
726 sub fred {} ;
727 -fred ;
728 {
729     no warnings 'ambiguous' ;
730     -fred ;
731     use warnings 'ambiguous' ;
732     -fred ;
733 }
734 -fred ;
735 EXPECT
736 Ambiguous use of -fred resolved as -&fred() at - line 4.
737 Ambiguous use of -fred resolved as -&fred() at - line 9.
738 Ambiguous use of -fred resolved as -&fred() at - line 11.
739 ########
740 # toke.c
741 use utf8;
742 use open qw( :utf8 :std );
743 sub frèd {};
744 -frèd ;
745 EXPECT
746 Ambiguous use of -frèd resolved as -&frèd() at - line 5.
747 ########
748 # toke.c
749 $^W = 0 ;
750 use utf8;
751 use open qw( :utf8 :std );
752 sub frèd {} ;
753 -frèd ;
754 {
755     no warnings 'ambiguous' ;
756     -frèd ;
757     use warnings 'ambiguous' ;
758     -frèd ;
759 }
760 -frèd ;
761 EXPECT
762 Ambiguous use of -frèd resolved as -&frèd() at - line 6.
763 Ambiguous use of -frèd resolved as -&frèd() at - line 11.
764 Ambiguous use of -frèd resolved as -&frèd() at - line 13.
765 ########
766 # toke.c
767 use utf8;
768 use open qw( :utf8 :std );
769 sub ᒍᒘᒊ {};
770 -ᒍᒘᒊ ;
771 EXPECT
772 Ambiguous use of -ᒍᒘᒊ resolved as -&ᒍᒘᒊ() at - line 5.
773 ########
774 # toke.c
775 $^W = 0 ;
776 use utf8;
777 use open qw( :utf8 :std );
778 sub ᒍᒘᒊ {} ;
779 -ᒍᒘᒊ ;
780 {
781     no warnings 'ambiguous' ;
782     -ᒍᒘᒊ ;
783     use warnings 'ambiguous' ;
784     -ᒍᒘᒊ ;
785 }
786 -ᒍᒘᒊ ;
787 EXPECT
788 Ambiguous use of -ᒍᒘᒊ resolved as -&ᒍᒘᒊ() at - line 6.
789 Ambiguous use of -ᒍᒘᒊ resolved as -&ᒍᒘᒊ() at - line 11.
790 Ambiguous use of -ᒍᒘᒊ resolved as -&ᒍᒘᒊ() at - line 13.
791 ########
792 # toke.c
793 open FOO || time;
794 open local *FOO; # should be ok
795 EXPECT
796 Precedence problem: open FOO should be open(FOO) at - line 2.
797 ########
798 # toke.c
799 use utf8;
800 use open qw( :utf8 :std );
801 open FÒÒ || time;
802 EXPECT
803 Precedence problem: open FÒÒ should be open(FÒÒ) at - line 4.
804 ########
805 # toke.c
806 use utf8;
807 use open qw( :utf8 :std );
808 open ᒍOO || time;
809 EXPECT
810 Precedence problem: open ᒍOO should be open(ᒍOO) at - line 4.
811 ########
812 # toke.c (and [perl #16184])
813 open FOO => "<&0"; close FOO;
814 EXPECT
815 ########
816 # toke.c
817 $^W = 0 ;
818 open FOO || time;
819 {
820     no warnings 'precedence' ;
821     open FOO || time;
822     use warnings 'precedence' ;
823     open FOO || time;
824 }
825 open FOO || time;
826 open Foo::BAR; # this should not warn
827 EXPECT
828 Precedence problem: open FOO should be open(FOO) at - line 3.
829 Precedence problem: open FOO should be open(FOO) at - line 8.
830 Precedence problem: open FOO should be open(FOO) at - line 10.
831 ########
832 # toke.c
833 $^W = 0 ;
834 use utf8;
835 use open qw( :utf8 :std );
836 open FÒÒ || time;
837 {
838     no warnings 'precedence' ;
839     open FÒÒ || time;
840     use warnings 'precedence' ;
841     open FÒÒ || time;
842 }
843 open FÒÒ || time;
844 EXPECT
845 Precedence problem: open FÒÒ should be open(FÒÒ) at - line 5.
846 Precedence problem: open FÒÒ should be open(FÒÒ) at - line 10.
847 Precedence problem: open FÒÒ should be open(FÒÒ) at - line 12.
848 ########
849 # toke.c
850 use utf8;
851 use open qw( :utf8 :std );
852 $^W = 0 ;
853 open ᒍÒÒ || time;
854 {
855     no warnings 'precedence' ;
856     open ᒍÒÒ || time;
857     use warnings 'precedence' ;
858     open ᒍÒÒ || time;
859 }
860 open ᒍÒÒ || time;
861 EXPECT
862 Precedence problem: open ᒍÒÒ should be open(ᒍÒÒ) at - line 5.
863 Precedence problem: open ᒍÒÒ should be open(ᒍÒÒ) at - line 10.
864 Precedence problem: open ᒍÒÒ should be open(ᒍÒÒ) at - line 12.
865 ########
866 # toke.c
867 $^W = 0 ;
868 *foo *foo ;
869 {
870     no warnings 'ambiguous' ;
871     *foo *foo ;
872     use warnings 'ambiguous' ;
873     *foo *foo ;
874 }
875 *foo *foo ;
876 EXPECT
877 Operator or semicolon missing before *foo at - line 3.
878 Ambiguous use of * resolved as operator * at - line 3.
879 Operator or semicolon missing before *foo at - line 8.
880 Ambiguous use of * resolved as operator * at - line 8.
881 Operator or semicolon missing before *foo at - line 10.
882 Ambiguous use of * resolved as operator * at - line 10.
883 ########
884 # toke.c
885 use utf8;
886 use open qw( :utf8 :std );
887 $^W = 0 ;
888 *foo *foo ;
889 {
890     no warnings 'ambiguous' ;
891     *foo *foo ;
892     use warnings 'ambiguous' ;
893     *foo *foo ;
894 }
895 *foo *foo ;
896 EXPECT
897 Operator or semicolon missing before *foo at - line 5.
898 Ambiguous use of * resolved as operator * at - line 5.
899 Operator or semicolon missing before *foo at - line 10.
900 Ambiguous use of * resolved as operator * at - line 10.
901 Operator or semicolon missing before *foo at - line 12.
902 Ambiguous use of * resolved as operator * at - line 12.
903 ########
904 # toke.c
905 use warnings 'misc' ;
906 my $a = "\m" ;
907 no warnings 'misc' ;
908 $a = "\m" ;
909 EXPECT
910 Unrecognized escape \m passed through at - line 3.
911 ########
912 # toke.c
913 use warnings 'misc' ;
914 my $a = "abcd\E" ;
915 no warnings 'misc' ;
916 $a = "abcd\E" ;
917 EXPECT
918 Useless use of \E at - line 3.
919 ########
920 # toke.c
921 use warnings 'portable' ;
922 my $a =  0b011111111111111111111111111111110 ;
923    $a =  0b011111111111111111111111111111111 ;
924    $a =  0b111111111111111111111111111111111 ;
925    $a =  0x0fffffffe ;
926    $a =  0x0ffffffff ;
927    $a =  0x1ffffffff ;
928    $a =  0037777777776 ;
929    $a =  0037777777777 ;
930    $a =  0047777777777 ;
931 no warnings 'portable' ;
932    $a =  0b011111111111111111111111111111110 ;
933    $a =  0b011111111111111111111111111111111 ;
934    $a =  0b111111111111111111111111111111111 ;
935    $a =  0x0fffffffe ;
936    $a =  0x0ffffffff ;
937    $a =  0x1ffffffff ;
938    $a =  0037777777776 ;
939    $a =  0037777777777 ;
940    $a =  0047777777777 ;
941 EXPECT
942 Binary number > 0b11111111111111111111111111111111 non-portable at - line 5.
943 Hexadecimal number > 0xffffffff non-portable at - line 8.
944 Octal number > 037777777777 non-portable at - line 11.
945 ########
946 # toke.c
947 use warnings 'overflow' ;
948 my $a =  0b011111111111111111111111111111110 ;
949    $a =  0b011111111111111111111111111111111 ;
950    $a =  0b10000000000000000000000000000000000000000000000000000000000000000 ;
951    $a =  0x0fffffffe ;
952    $a =  0x0ffffffff ;
953    $a =  0x10000000000000000 ;
954    $a =  0037777777776 ;
955    $a =  0037777777777 ;
956    $a =  002000000000000000000000;
957 no warnings 'overflow' ;
958    $a =  0b011111111111111111111111111111110 ;
959    $a =  0b011111111111111111111111111111111 ;
960    $a =  0b10000000000000000000000000000000000000000000000000000000000000000 ;
961    $a =  0x0fffffffe ;
962    $a =  0x0ffffffff ;
963    $a =  0x10000000000000000 ;
964    $a =  0037777777776 ;
965    $a =  0037777777777 ;
966    $a =  002000000000000000000000;
967 EXPECT
968 Integer overflow in binary number at - line 5.
969 Integer overflow in hexadecimal number at - line 8.
970 Integer overflow in octal number at - line 11.
971 ########
972 # toke.c
973 BEGIN { $^C = 1; }
974 use warnings 'misc';
975 dump;
976 CORE::dump;
977 EXPECT
978 dump() better written as CORE::dump() at - line 4.
979 - syntax OK
980 ########
981 # toke.c
982 use warnings 'misc';
983 use subs qw/dump/;
984 sub dump { print "no warning for overridden dump\n"; }
985 dump;
986 EXPECT
987 no warning for overridden dump
988 ########
989 # toke.c
990 use warnings 'ambiguous';
991 "@mjd_previously_unused_array";        
992 no warnings 'ambiguous';
993 "@mjd_previously_unused_array2";        
994 EXPECT
995 Possible unintended interpolation of @mjd_previously_unused_array in string at - line 3.
996 ########
997 # toke.c
998 use utf8;
999 use open qw( :utf8 :std );
1000 use warnings 'ambiguous';
1001 "@mjd_previously_unused_àrray";        
1002 no warnings 'ambiguous';
1003 "@mjd_previously_unused_àrray2";        
1004 EXPECT
1005 Possible unintended interpolation of @mjd_previously_unused_àrray in string at - line 5.
1006 ########
1007 # toke.c
1008 use utf8;
1009 use open qw( :utf8 :std );
1010 use warnings 'ambiguous';
1011 "@mjd_previously_unused_ぁrrぁy";        
1012 no warnings 'ambiguous';
1013 "@mjd_previously_unused_ぁrrぁy2";        
1014 EXPECT
1015 Possible unintended interpolation of @mjd_previously_unused_ぁrrぁy in string at - line 5.
1016 ########
1017 # toke.c
1018 # 20020328 mjd-perl-patch+@plover.com at behest of jfriedl@yahoo.com
1019 use warnings 'regexp';
1020 "foo" =~ /foo/c;
1021 "foo" =~ /foo/cg;
1022 no warnings 'regexp';
1023 "foo" =~ /foo/c;
1024 "foo" =~ /foo/cg;
1025 EXPECT
1026 Use of /c modifier is meaningless without /g at - line 4.
1027 ########
1028 # toke.c
1029 # 20020328 mjd-perl-patch+@plover.com at behest of jfriedl@yahoo.com
1030 use warnings 'regexp';
1031 $_ = "ab" ; 
1032 s/ab/ab/c;
1033 s/ab/ab/cg;
1034 no warnings 'regexp';
1035 s/ab/ab/c;
1036 s/ab/ab/cg;
1037 EXPECT
1038 Use of /c modifier is meaningless in s/// at - line 5.
1039 Use of /c modifier is meaningless in s/// at - line 6.
1040 ########
1041 -wa
1042 # toke.c
1043 # 20020414 mjd-perl-patch+@plover.com # -a flag should suppress these warnings
1044 print "@F\n";
1045 EXPECT
1046
1047 ########
1048 -w
1049 # toke.c
1050 # 20020414 mjd-perl-patch+@plover.com # -a flag should suppress these warnings
1051 print "@F\n";
1052 EXPECT
1053 Possible unintended interpolation of @F in string at - line 4.
1054 Name "main::F" used only once: possible typo at - line 4.
1055 ########
1056 -wa
1057 # toke.c
1058 # 20020414 mjd-perl-patch+@plover.com
1059 EXPECT
1060
1061 ########
1062 # toke.c
1063 # 20020414 mjd-perl-patch+@plover.com
1064 # In 5.7.3, this emitted "Possible unintended interpolation" warnings
1065 use warnings 'ambiguous';
1066 $s = "(@-)(@+)";
1067 EXPECT
1068
1069 ########
1070 # toke.c
1071 # mandatory warning
1072 eval q/if ($a) { } elseif ($b) { }/;
1073 no warnings "syntax";
1074 eval q/if ($a) { } elseif ($b) { }/;
1075 EXPECT
1076 elseif should be elsif at (eval 1) line 1.
1077 ########
1078 # toke.c
1079 # mandatory warning
1080 eval q/5 6/;
1081 no warnings "syntax";
1082 eval q/5 6/;
1083 EXPECT
1084 Number found where operator expected at (eval 1) line 1, near "5 6"
1085         (Missing operator before  6?)
1086 ########
1087 # toke.c
1088 use warnings "syntax"; no warnings "deprecated";
1089 $_ = $a = 1;
1090 $a !=~  /1/;
1091 $a !=~ m#1#;
1092 $a !=~/1/;
1093 $a !=~ ?/?;
1094 $a !=~ y/1//;
1095 $a !=~ tr/1//;
1096 $a !=~ s/1//;
1097 $a != ~/1/;
1098 no warnings "syntax";
1099 $a !=~  /1/;
1100 $a !=~ m#1#;
1101 $a !=~/1/;
1102 $a !=~ ?/?;
1103 $a !=~ y/1//;
1104 $a !=~ tr/1//;
1105 $a !=~ s/1//;
1106 EXPECT
1107 !=~ should be !~ at - line 4.
1108 !=~ should be !~ at - line 5.
1109 !=~ should be !~ at - line 6.
1110 !=~ should be !~ at - line 7.
1111 !=~ should be !~ at - line 8.
1112 !=~ should be !~ at - line 9.
1113 !=~ should be !~ at - line 10.
1114 ########
1115 # toke.c
1116 our $foo :unique;
1117 sub pam :locked;
1118 sub glipp :locked {
1119 }
1120 sub whack_eth ($) : locked {
1121 }
1122 no warnings 'deprecated';
1123 our $bar :unique;
1124 sub zapeth :locked;
1125 sub ker_plop :locked {
1126 }
1127 sub swa_a_p ($) : locked {
1128 }
1129 EXPECT
1130 Use of :unique is deprecated at - line 2.
1131 Use of :locked is deprecated at - line 3.
1132 Use of :locked is deprecated at - line 4.
1133 Use of :locked is deprecated at - line 6.
1134 ########
1135 # toke.c
1136 use warnings "syntax";
1137 sub proto_after_array(@$);
1138 sub proto_after_arref(\@$);
1139 sub proto_after_arref2(\[@$]);
1140 sub proto_after_arref3(\[@$]_);
1141 sub proto_after_hash(%$);
1142 sub proto_after_hashref(\%$);
1143 sub proto_after_hashref2(\[%$]);
1144 sub underscore_last_pos($_);
1145 sub underscore2($_;$);
1146 sub underscore_fail($_$);
1147 sub underscore_after_at(@_);
1148 our sub hour (@$);
1149 my sub migh (@$);
1150 use 5.01;
1151 state sub estate (@$);
1152 package other;
1153 sub hour (@$);
1154 sub migh (@$);
1155 sub estate (@$);
1156 no warnings "syntax";
1157 sub proto_after_array(@$);
1158 sub proto_after_hash(%$);
1159 sub underscore_fail($_$);
1160 EXPECT
1161 Prototype after '@' for main::proto_after_array : @$ at - line 3.
1162 Prototype after '%' for main::proto_after_hash : %$ at - line 7.
1163 Illegal character after '_' in prototype for main::underscore_fail : $_$ at - line 12.
1164 Prototype after '@' for main::underscore_after_at : @_ at - line 13.
1165 Prototype after '@' for hour : @$ at - line 14.
1166 Prototype after '@' for migh : @$ at - line 15.
1167 Prototype after '@' for estate : @$ at - line 17.
1168 Prototype after '@' for hour : @$ at - line 19.
1169 Prototype after '@' for migh : @$ at - line 20.
1170 Prototype after '@' for estate : @$ at - line 21.
1171 ########
1172 # toke.c
1173 use warnings "ambiguous";
1174 "foo\nn" =~ /^foo$\n/;
1175 "foo\nn" =~ /^foo${\}n/;
1176 my $foo = qr/^foo$\n/;
1177 my $bar = qr/^foo${\}n/;
1178 no warnings "ambiguous";
1179 "foo\nn" =~ /^foo$\n/;
1180 "foo\nn" =~ /^foo${\}n/;
1181 my $foo = qr/^foo$\n/;
1182 my $bar = qr/^foo${\}n/;
1183 EXPECT
1184 Possible unintended interpolation of $\ in regex at - line 3.
1185 Possible unintended interpolation of $\ in regex at - line 5.
1186 ########
1187 # toke.c
1188 use warnings 'syntax' ;
1189 my $a = "\o";
1190 my $a = "\o{";
1191 my $a = "\o{}";
1192 no warnings 'syntax' ;
1193 my $a = "\o";
1194 my $a = "\o{";
1195 my $a = "\o{}";
1196 EXPECT
1197 Missing braces on \o{} at - line 3, within string
1198 Missing right brace on \o{ at - line 4, within string
1199 Number with no digits at - line 5, within string
1200 BEGIN not safe after errors--compilation aborted at - line 6.
1201 ########
1202 # toke.c
1203 use warnings 'digit' ;
1204 my $a = "\o{1238456}";
1205 no warnings 'digit' ;
1206 my $a = "\o{1238456}";
1207 EXPECT
1208 Non-octal character '8'.  Resolved as "\o{123}" at - line 3.
1209 ########
1210 # toke.c
1211 use warnings;
1212 my $a = "foo";
1213 print $a =~ ?f? ? "yes\n" : "no\n" foreach 0..2;
1214 EXPECT
1215 Use of ?PATTERN? without explicit operator is deprecated at - line 4.
1216 yes
1217 no
1218 no
1219 ########
1220 # toke.c
1221 use warnings;
1222 my $a = "\c{ack}";
1223 $a = "\c,";
1224 $a = "\c`";
1225 no warnings 'syntax';
1226 $a = "\c{ack}";
1227 $a = "\c,";
1228 $a = "\c`";
1229 no warnings 'deprecated';
1230 EXPECT
1231 "\c{" is deprecated and is more clearly written as ";" at - line 3.
1232 "\c," is more clearly written simply as "l" at - line 4.
1233 "\c`" is more clearly written simply as "\ " at - line 5.
1234 "\c{" is deprecated and is more clearly written as ";" at - line 7.
1235 ########
1236 # toke.c
1237 use warnings 'syntax' ;
1238 my $a = qr/foo/du;
1239 $a = qr/foo/lai;
1240 $a = qr/foo/lil;
1241 $a = qr/foo/aia;
1242 $a = qr/foo/aaia;
1243 no warnings 'syntax' ;
1244 my $a = qr/foo/du;
1245 EXPECT
1246 Regexp modifiers "/d" and "/u" are mutually exclusive at - line 3, near "= "
1247 Regexp modifiers "/l" and "/a" are mutually exclusive at - line 4, near "= "
1248 Regexp modifier "/l" may not appear twice at - line 5, near "= "
1249 Regexp modifier "/a" may appear a maximum of twice at - line 7, near "= "
1250 BEGIN not safe after errors--compilation aborted at - line 8.
1251 ########
1252 # toke.c
1253 # [perl #4362]
1254 eval "print q\xabfoo";
1255 print "ok\n" if
1256     $@ =~ /Can't find string terminator "\xab" anywhere before EOF/;
1257 EXPECT
1258 ok
1259 ########
1260 # toke.c
1261 use utf8;
1262 use open qw( :utf8 :std );
1263 use warnings 'ambiguous' ;
1264 sub frèd {}
1265 $a = ${frèd} ;
1266 no warnings 'ambiguous' ;
1267 $a = ${frèd} ;
1268 EXPECT
1269 Ambiguous use of ${frèd} resolved to $frèd at - line 6.
1270 ########
1271 # toke.c
1272 use utf8;
1273 use open qw( :utf8 :std );
1274 use warnings 'ambiguous' ;
1275 sub f렏 {}
1276 $a = ${f렏} ;
1277 no warnings 'ambiguous' ;
1278 $a = ${f렏} ;
1279 EXPECT
1280 Ambiguous use of ${f렏} resolved to $f렏 at - line 6.
1281 ########
1282 # toke.c
1283 use utf8;
1284 use open qw( :utf8 :std );
1285 use warnings;
1286 CORE::렏;
1287 EXPECT
1288 CORE::렏 is not a keyword at - line 5.
1289 ########
1290 # toke.c
1291 # [perl #16249]
1292 print '';
1293 eval this_method_is_fake ();
1294 EXPECT
1295 Undefined subroutine &main::this_method_is_fake called at - line 4.