This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Forbid use of bare << to mean <<""
[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
8      \1 better written as $1 
9         use warnings 'syntax' ;
10         s/(abc)/\1/;
11  
12      warn(warn_nosemi) 
13      Semicolon seems to be missing
14         $a = 1
15         &time ;
16
17
18      Reversed %c= operator 
19         my $a =+ 2 ;
20         $a =- 2 ;
21         $a =* 2 ;
22         $a =% 2 ;
23         $a =& 2 ;
24         $a =. 2 ;
25         $a =^ 2 ;
26         $a =| 2 ;
27         $a =< 2 ;
28         $a =/ 2 ;
29
30      Multidimensional syntax %.*s not supported 
31         my $a = $a[1,2] ;
32
33      You need to quote \"%s\"" 
34         sub fred {} ; $SIG{TERM} = fred;
35
36      Can't use \\%c to mean $%c in expression 
37         $_ = "ab" ; s/(ab)/\1/e;
38
39      Unquoted string "abc" may clash with future reserved word at - line 3.
40      warn(warn_reserved 
41         $a = abc;
42
43      Possible attempt to separate words with commas 
44         @a = qw(a, b, c) ;
45
46      Possible attempt to put comments in qw() list 
47         @a = qw(a b # c) ;
48
49      %s (...) interpreted as function 
50         print ("")
51         printf ("")
52         sort ("")
53
54      Ambiguous use of %c{%s%s} resolved to %c%s%s 
55         $a = ${time[2]}
56         $a = ${time{2}}
57
58
59      Ambiguous use of %c{%s} resolved to %c%s
60         $a = ${time}
61         sub fred {} $a = ${fred}
62
63      Misplaced _ in number 
64         $a = 1_2;
65         $a = 1_2345_6;
66
67     Bareword \"%s\" refers to nonexistent package
68         $a = FRED:: ;
69
70     Ambiguous call resolved as CORE::%s(), qualify as such or use &
71         sub time {} 
72         my $a = time()
73
74     Unrecognized escape \\%c passed through
75         $a = "\m" ;
76
77     Useless use of \\E.
78         $a = "abcd\E" ;
79
80     Postfix dereference is experimental
81
82     %s number > %s non-portable
83         my $a =  0b011111111111111111111111111111110 ;
84         $a =  0b011111111111111111111111111111111 ;
85         $a =  0b111111111111111111111111111111111 ;
86         $a =  0x0fffffffe ;
87         $a =  0x0ffffffff ;
88         $a =  0x1ffffffff ;
89         $a =  0037777777776 ;
90         $a =  0037777777777 ;
91         $a =  0047777777777 ;
92
93     Integer overflow in binary number
94         my $a =  0b011111111111111111111111111111110 ;
95         $a =  0b011111111111111111111111111111111 ;
96         $a =  0b111111111111111111111111111111111 ;
97         $a =  0x0fffffffe ;
98         $a =  0x0ffffffff ;
99         $a =  0x1ffffffff ;
100         $a =  0037777777776 ;
101         $a =  0037777777777 ;
102         $a =  0047777777777 ;
103
104     dump() better written as CORE::dump()
105
106     Use of /c modifier is meaningless without /g     
107
108     Use of /c modifier is meaningless in s///
109
110     Mandatory Warnings
111     ------------------
112     Use of "%s" without parentheses is ambiguous        [check_uni]
113         rand + 4 
114
115     Ambiguous use of -%s resolved as -&%s()             [yylex]
116         sub fred {} ; - fred ;
117
118     Precedence problem: open %.*s should be open(%.*s)  [yylex]
119         open FOO || die;
120
121     Operator or semicolon missing before %c%s           [yylex]
122     Ambiguous use of %c resolved as operator %c
123         *foo *foo
124
125 __END__
126 # toke.c
127 $a =~ m/$foo/eq;
128 $a =~ s/$foo/fool/seq;
129
130 EXPECT
131 OPTION fatal
132 Unknown regexp modifier "/e" at - line 2, near "=~ "
133 Unknown regexp modifier "/q" at - line 2, near "=~ "
134 Unknown regexp modifier "/q" at - line 3, near "=~ "
135 Execution of - aborted due to compilation errors.
136 ########
137 # toke.c
138 use utf8;
139 use open qw( :utf8 :std );
140 $a =~ m/$foo/eネq;
141 $a =~ s/$foo/fool/seネq;
142
143 EXPECT
144 OPTION fatal
145 Unknown regexp modifier "/e" at - line 4, near "=~ "
146 Unknown regexp modifier "/ネ" at - line 4, near "=~ "
147 Unknown regexp modifier "/q" at - line 4, near "=~ "
148 Unknown regexp modifier "/ネ" at - line 5, near "=~ "
149 Unknown regexp modifier "/q" at - line 5, near "=~ "
150 Execution of - aborted due to compilation errors.
151 ########
152 # toke.c
153 use warnings 'syntax' ;
154 s/(abc)/\1/;
155 no warnings 'syntax' ;
156 s/(abc)/\1/;
157 EXPECT
158 \1 better written as $1 at - line 3.
159 ########
160 # toke.c
161 use warnings 'semicolon' ;
162 $a = 1
163 &time ;
164 no warnings 'semicolon' ;
165 $a = 1
166 &time ;
167 EXPECT
168 Semicolon seems to be missing at - line 3.
169 ########
170 # toke.c
171 use warnings 'syntax' ;
172 my $a =+ 2 ;
173 $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 EXPECT
183 Reversed += operator at - line 3.
184 Reversed -= operator at - line 4.
185 Reversed *= operator at - line 5.
186 Reversed %= operator at - line 6.
187 Reversed &= operator at - line 7.
188 Reversed .= operator at - line 8.
189 Reversed ^= operator at - line 9.
190 Reversed |= operator at - line 10.
191 Reversed <= operator at - line 11.
192 syntax error at - line 8, near "=."
193 syntax error at - line 9, near "=^"
194 syntax error at - line 10, near "=|"
195 Unterminated <> operator at - line 11.
196 ########
197 # toke.c
198 no warnings 'syntax' ;
199 my $a =+ 2 ;
200 $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 EXPECT
210 syntax error at - line 8, near "=."
211 syntax error at - line 9, near "=^"
212 syntax error at - line 10, near "=|"
213 Unterminated <> operator at - line 11.
214 ########
215 # toke.c
216 use warnings 'syntax' ;
217 my $a = $a[1,2] ;
218 no warnings 'syntax' ;
219 my $a = $a[1,2] ;
220 EXPECT
221 Multidimensional syntax $a[1,2] not supported at - line 3.
222 ########
223 # toke.c
224 use warnings 'syntax' ;
225 sub fred {} ; $SIG{TERM} = fred;
226 no warnings 'syntax' ;
227 $SIG{TERM} = fred;
228 EXPECT
229 You need to quote "fred" at - line 3.
230 ########
231 # toke.c
232 use utf8;
233 use open qw( :utf8 :std );
234 use warnings 'syntax' ;
235 sub frèd {} ; $SIG{TERM} = frèd;
236 no warnings 'syntax' ;
237 $SIG{TERM} = frèd;
238 EXPECT
239 You need to quote "frèd" at - line 5.
240 ########
241 # toke.c
242 use utf8;
243 use open qw( :utf8 :std );
244 use warnings 'syntax' ;
245 sub ふれど {} ; $SIG{TERM} = ふれど;
246 no warnings 'syntax' ;
247 $SIG{TERM} = ふれど;
248 EXPECT
249 You need to quote "ふれど" at - line 5.
250 ########
251 # toke.c
252 use warnings 'syntax' ;
253 $_ = "ab" ; 
254 s/(ab)/\1/e;
255 s//\(2)/e; # should be exempt
256 s/${\2}//; # same here
257 ()="${\2}"; # metoo
258 no warnings 'syntax' ;
259 $_ = "ab" ; 
260 s/(ab)/\1/e;
261 EXPECT
262 Can't use \1 to mean $1 in expression at - line 4.
263 ########
264 # toke.c
265 use warnings 'reserved' ;
266 $a = abc;
267 $a = { def
268
269 => 1 };
270 no warnings 'reserved' ;
271 $a = abc;
272 EXPECT
273 Unquoted string "abc" may clash with future reserved word at - line 3.
274 ########
275 # toke.c
276 use warnings 'qw' ;
277 @a = qw(a, b, c) ;
278 no warnings 'qw' ;
279 @a = qw(a, b, c) ;
280 EXPECT
281 Possible attempt to separate words with commas at - line 3.
282 ########
283 # toke.c
284 use warnings 'qw' ;
285 @a = qw(a b c # #) ;
286 no warnings 'qw' ;
287 @a = qw(a b c # #) ;
288 EXPECT
289 Possible attempt to put comments in qw() list at - line 3.
290 ########
291 # toke.c
292 use warnings 'qw' ;
293 @a = qw(a, b, c # #) ;
294 no warnings 'qw' ;
295 @a = qw(a, b, c # #) ;
296 EXPECT
297 Possible attempt to separate words with commas at - line 3.
298 Possible attempt to put comments in qw() list at - line 3.
299 ########
300 # toke.c
301 use warnings 'syntax' ;
302 print ("");
303 print ("") and $x = 1;
304 print ("") or die;
305 print ("") // die;
306 print (1+2) * 3 if 0; # only this one should warn
307 print (1+2) if 0;
308 EXPECT
309 print (...) interpreted as function at - line 7.
310 ########
311 # toke.c
312 no warnings 'syntax' ;
313 print ("")
314 EXPECT
315
316 ########
317 # toke.c
318 use warnings 'syntax' ;
319 printf ("");
320 printf ("") . '';
321 EXPECT
322 printf (...) interpreted as function at - line 4.
323 ########
324 # toke.c
325 no warnings 'syntax' ;
326 printf ("")
327 EXPECT
328
329 ########
330 # toke.c
331 use warnings 'syntax' ;
332 sort ("");
333 sort ("") . '';
334 EXPECT
335 sort (...) interpreted as function at - line 4.
336 ########
337 # toke.c
338 no warnings 'syntax' ;
339 sort ("")
340 EXPECT
341
342 ########
343 # toke.c
344 use warnings 'ambiguous' ;
345 $a = ${time[2]};
346 no warnings 'ambiguous' ;
347 $a = ${time[2]};
348 EXPECT
349 Ambiguous use of ${time[...]} resolved to $time[...] at - line 3.
350 ########
351 # toke.c
352 use warnings 'ambiguous' ;
353 $a = ${time{2}};
354 EXPECT
355 Ambiguous use of ${time{...}} resolved to $time{...} at - line 3.
356 ########
357 # toke.c
358 use warnings 'ambiguous' ;
359 $a = ${
360
361     time
362         {2}
363 };
364 warn "after";
365 EXPECT
366 Ambiguous use of ${time{...}} resolved to $time{...} at - line 5.
367 after at - line 8.
368 ########
369 # toke.c
370 use warnings 'ambiguous' ;
371 $a = ${
372
373 time[2]
374
375 };
376 $a = ${
377
378 time    
379    [2]
380
381 };
382 warn "after";
383 EXPECT
384 Ambiguous use of ${time[...]} resolved to $time[...] at - line 5.
385 Ambiguous use of ${time[...]} resolved to $time[...] at - line 10.
386 after at - line 14.
387 ########
388 # toke.c
389 no warnings 'ambiguous' ;
390 $a = ${time{2}};
391 EXPECT
392
393 ########
394 # toke.c
395 use warnings 'ambiguous' ;
396 $a = ${time} ;
397 $a = @{time} ;
398 $a = $#{time} ; # This one is special cased in toke.c
399 $a = %{time} ;
400 $a = *{time} ;
401 $a = defined &{time} ; # To avoid calling &::time
402 no warnings 'ambiguous' ;
403 $a = ${time} ;
404 $a = @{time} ;
405 $a = $#{time} ; # This one is special cased in toke.c
406 $a = %{time} ;
407 $a = *{time} ;
408 $a = defined &{time} ; # To avoid calling &::time
409 EXPECT
410 Ambiguous use of ${time} resolved to $time at - line 3.
411 Ambiguous use of @{time} resolved to @time at - line 4.
412 Ambiguous use of @{time} resolved to @time at - line 5.
413 Ambiguous use of %{time} resolved to %time at - line 6.
414 Ambiguous use of *{time} resolved to *time at - line 7.
415 Ambiguous use of &{time} resolved to &time at - line 8.
416 ########
417 # toke.c
418 use warnings 'ambiguous' ;
419 $a = ${
420 time
421 } ;
422 $a = @{
423 time
424 } ;
425 $a = $#{
426 time
427 } ;
428 $a = %{
429 time
430 } ;
431 $a = *{
432 time
433 } ;
434 $a = defined &{
435 time
436
437
438 } ;
439 warn "last";
440 EXPECT
441 Ambiguous use of ${time} resolved to $time at - line 4.
442 Ambiguous use of @{time} resolved to @time at - line 7.
443 Ambiguous use of @{time} resolved to @time at - line 10.
444 Ambiguous use of %{time} resolved to %time at - line 13.
445 Ambiguous use of *{time} resolved to *time at - line 16.
446 Ambiguous use of &{time} resolved to &time at - line 19.
447 last at - line 23.
448 ########
449 # toke.c
450 use warnings 'ambiguous' ;
451 sub fred {}
452 $a = ${fred} ;
453 no warnings 'ambiguous' ;
454 $a = ${fred} ;
455 EXPECT
456 Ambiguous use of ${fred} resolved to $fred at - line 4.
457 ########
458 # toke.c
459 use warnings 'syntax' ;
460 $a = _123; print "$a\n";                #( 3    string)
461 $a = 1_23; print "$a\n";
462 $a = 12_3; print "$a\n";
463 $a = 123_; print "$a\n";                #  6
464 $a = _+123; print "$a\n";               #  7    string)
465 $a = +_123; print "$a\n";               #( 8    string)
466 $a = +1_23; print "$a\n";
467 $a = +12_3; print "$a\n";
468 $a = +123_; print "$a\n";               # 11
469 $a = _-123; print "$a\n";               #(12    string)
470 $a = -_123; print "$a\n";               #(13    string)
471 $a = -1_23; print "$a\n";
472 $a = -12_3; print "$a\n";
473 $a = -123_; print "$a\n";               # 16
474 $a = 123._456; print "$a\n";            # 17
475 $a = 123.4_56; print "$a\n";
476 $a = 123.45_6; print "$a\n";
477 $a = 123.456_; print "$a\n";            # 20
478 $a = +123._456; print "$a\n";           # 21
479 $a = +123.4_56; print "$a\n";   
480 $a = +123.45_6; print "$a\n";   
481 $a = +123.456_; print "$a\n";           # 24
482 $a = -123._456; print "$a\n";           # 25
483 $a = -123.4_56; print "$a\n";   
484 $a = -123.45_6; print "$a\n";
485 $a = -123.456_; print "$a\n";           # 28
486 $a = 123.456E_12; printf("%.0f\n", $a); # 29
487 $a = 123.456E1_2; printf("%.0f\n", $a);
488 $a = 123.456E12_; printf("%.0f\n", $a); # 31
489 $a = 123.456E_+12; printf("%.0f\n", $a);        # 32
490 $a = 123.456E+_12; printf("%.0f\n", $a);        # 33
491 $a = 123.456E+1_2; printf("%.0f\n", $a);
492 $a = 123.456E+12_; printf("%.0f\n", $a);        # 35
493 $a = 123.456E_-12; print "$a\n";        # 36
494 $a = 123.456E-_12; print "$a\n";        # 37
495 $a = 123.456E-1_2; print "$a\n";
496 $a = 123.456E-12_; print "$a\n";        # 39
497 $a = 1__23; print "$a\n";               # 40
498 $a = 12.3__4; print "$a\n";             # 41
499 $a = 12.34e1__2; printf("%.0f\n", $a);  # 42
500 no warnings 'syntax' ;
501 $a = _123; print "$a\n";
502 $a = 1_23; print "$a\n";
503 $a = 12_3; print "$a\n";
504 $a = 123_; print "$a\n";
505 $a = _+123; print "$a\n";
506 $a = +_123; print "$a\n";
507 $a = +1_23; print "$a\n";
508 $a = +12_3; print "$a\n";
509 $a = +123_; print "$a\n";
510 $a = _-123; print "$a\n";
511 $a = -_123; print "$a\n";
512 $a = -1_23; print "$a\n";
513 $a = -12_3; print "$a\n";
514 $a = -123_; print "$a\n";
515 $a = 123._456; print "$a\n";
516 $a = 123.4_56; print "$a\n";
517 $a = 123.45_6; print "$a\n";
518 $a = 123.456_; print "$a\n";
519 $a = +123._456; print "$a\n";
520 $a = +123.4_56; print "$a\n";
521 $a = +123.45_6; print "$a\n";
522 $a = +123.456_; print "$a\n";
523 $a = -123._456; print "$a\n";
524 $a = -123.4_56; print "$a\n";
525 $a = -123.45_6; print "$a\n";
526 $a = -123.456_; print "$a\n";
527 $a = 123.456E_12; printf("%.0f\n", $a);
528 $a = 123.456E1_2; printf("%.0f\n", $a);
529 $a = 123.456E12_; printf("%.0f\n", $a);
530 $a = 123.456E_+12; printf("%.0f\n", $a);
531 $a = 123.456E+_12; printf("%.0f\n", $a);
532 $a = 123.456E+1_2; printf("%.0f\n", $a);
533 $a = 123.456E+12_; printf("%.0f\n", $a);
534 $a = 123.456E_-12; print "$a\n";
535 $a = 123.456E-_12; print "$a\n";
536 $a = 123.456E-1_2; print "$a\n";
537 $a = 123.456E-12_; print "$a\n";
538 $a = 1__23; print "$a\n";
539 $a = 12.3__4; print "$a\n";
540 $a = 12.34e1__2; printf("%.0f\n", $a);
541 EXPECT
542 OPTIONS regex
543 Misplaced _ in number at - line 6.
544 Misplaced _ in number at - line 11.
545 Misplaced _ in number at - line 16.
546 Misplaced _ in number at - line 17.
547 Misplaced _ in number at - line 20.
548 Misplaced _ in number at - line 21.
549 Misplaced _ in number at - line 24.
550 Misplaced _ in number at - line 25.
551 Misplaced _ in number at - line 28.
552 Misplaced _ in number at - line 29.
553 Misplaced _ in number at - line 31.
554 Misplaced _ in number at - line 32.
555 Misplaced _ in number at - line 33.
556 Misplaced _ in number at - line 35.
557 Misplaced _ in number at - line 36.
558 Misplaced _ in number at - line 37.
559 Misplaced _ in number at - line 39.
560 Misplaced _ in number at - line 40.
561 Misplaced _ in number at - line 41.
562 Misplaced _ in number at - line 42.
563 _123
564 123
565 123
566 123
567 123
568 _123
569 123
570 123
571 123
572 -123
573 -_123
574 -123
575 -123
576 -123
577 123.456
578 123.456
579 123.456
580 123.456
581 123.456
582 123.456
583 123.456
584 123.456
585 -123.456
586 -123.456
587 -123.456
588 -123.456
589 123456000000000
590 123456000000000
591 123456000000000
592 123456000000000
593 123456000000000
594 123456000000000
595 123456000000000
596 1.23456e-0?10
597 1.23456e-0?10
598 1.23456e-0?10
599 1.23456e-0?10
600 123
601 12.34
602 12340000000000
603 _123
604 123
605 123
606 123
607 123
608 _123
609 123
610 123
611 123
612 -123
613 -_123
614 -123
615 -123
616 -123
617 123.456
618 123.456
619 123.456
620 123.456
621 123.456
622 123.456
623 123.456
624 123.456
625 -123.456
626 -123.456
627 -123.456
628 -123.456
629 123456000000000
630 123456000000000
631 123456000000000
632 123456000000000
633 123456000000000
634 123456000000000
635 123456000000000
636 1.23456e-0?10
637 1.23456e-0?10
638 1.23456e-0?10
639 1.23456e-0?10
640 123
641 12.34
642 12340000000000
643 ########
644 # toke.c
645 use warnings 'syntax';
646 $a = 1_; print "$a\n";
647 $a = 01_; print "$a\n";
648 $a = 0_; print "$a\n";
649 $a = 0x1_; print "$a\n";
650 $a = 0x_; print "$a\n";
651 $a = 1.2_; print "$a\n";
652 $a = 1._2; print "$a\n";
653 $a = 1._; print "$a\n";
654 EXPECT
655 Misplaced _ in number at - line 3.
656 Misplaced _ in number at - line 4.
657 Misplaced _ in number at - line 5.
658 Misplaced _ in number at - line 6.
659 Misplaced _ in number at - line 7.
660 Misplaced _ in number at - line 8.
661 Misplaced _ in number at - line 9.
662 Misplaced _ in number at - line 10.
663 1
664 1
665 0
666 1
667 0
668 1.2
669 1.2
670 1
671 ########
672 # toke.c
673 use warnings 'bareword' ;
674 #line 25 "bar"
675 $a = FRED:: ;
676 no warnings 'bareword' ;
677 #line 25 "bar"
678 $a = FRED:: ;
679 EXPECT
680 Bareword "FRED::" refers to nonexistent package at bar line 25.
681 ########
682 # toke.c
683 use utf8;
684 use open qw( :utf8 :std );
685 use warnings 'bareword' ;
686 #line 25 "bar"
687 $a = FRÈD:: ;
688 no warnings 'bareword' ;
689 #line 25 "bar"
690 $a = FRÈD:: ;
691 EXPECT
692 Bareword "FRÈD::" refers to nonexistent package at bar line 25.
693 ########
694 # toke.c
695 use utf8;
696 use open qw( :utf8 :std );
697 use warnings 'bareword' ;
698 #line 25 "bar"
699 $a = ϞϞϞ:: ;
700 no warnings 'bareword' ;
701 #line 25 "bar"
702 $a = ϞϞϞ:: ;
703 EXPECT
704 Bareword "ϞϞϞ::" refers to nonexistent package at bar line 25.
705 ########
706 # toke.c
707 use warnings 'ambiguous' ;
708 sub time {}
709 my $a = time() ;
710 no warnings 'ambiguous' ;
711 my $b = time() ;
712 EXPECT
713 Ambiguous call resolved as CORE::time(), qualify as such or use & at - line 4.
714 ########
715 # toke.c
716 use warnings ;
717 eval <<'EOE';
718 #  line 30 "foo"
719 warn "yelp";
720 {
721   $_ = " \x{123} " ;
722 }
723 EOE
724 EXPECT
725 yelp at foo line 30.
726 ########
727 # toke.c
728 my $a = rand + 4 ;
729 $a = rand *^H ;
730 $a = rand $^H ;
731 EXPECT
732 Warning: Use of "rand" without parentheses is ambiguous at - line 2.
733 ########
734 # toke.c
735 $^W = 0 ;
736 my $a = rand + 4 ;
737 {
738     no warnings 'ambiguous' ;
739     $a = rand + 4 ;
740     use warnings 'ambiguous' ;
741     $a = rand + 4 ;
742 }
743 $a = rand + 4 ;
744 EXPECT
745 Warning: Use of "rand" without parentheses is ambiguous at - line 3.
746 Warning: Use of "rand" without parentheses is ambiguous at - line 8.
747 Warning: Use of "rand" without parentheses is ambiguous at - line 10.
748 ########
749 # [perl #97110]
750 sub myrand(;$) { }
751 sub whatever($) { }
752 my $a = myrand + 4 ;
753 my $b = whatever + 4 ;
754 EXPECT
755 Warning: Use of "myrand" without parentheses is ambiguous at - line 4.
756 ########
757 # toke.c
758 use warnings "ambiguous";
759 print for keys %+; # should not warn
760 EXPECT
761 ########
762 # toke.c [This does not warn any more.]
763 sub fred {};
764 -fred ;
765 sub hank : lvalue {$_}
766 --hank; # This should *not* warn [perl #77240]
767 EXPECT
768 ########
769 # toke.c [This does not warn any more.]
770 $^W = 0 ;
771 sub fred {} ;
772 -fred ;
773 {
774     no warnings 'ambiguous' ;
775     -fred ;
776     use warnings 'ambiguous' ;
777     -fred ;
778 }
779 -fred ;
780 EXPECT
781 ########
782 # toke.c [This does not warn any more.]
783 use utf8;
784 use open qw( :utf8 :std );
785 sub frèd {};
786 -frèd ;
787 EXPECT
788 ########
789 # toke.c [This does not warn any more.]
790 $^W = 0 ;
791 use utf8;
792 use open qw( :utf8 :std );
793 sub frèd {} ;
794 -frèd ;
795 {
796     no warnings 'ambiguous' ;
797     -frèd ;
798     use warnings 'ambiguous' ;
799     -frèd ;
800 }
801 -frèd ;
802 EXPECT
803 ########
804 # toke.c [This does not warn any more.]
805 use utf8;
806 use open qw( :utf8 :std );
807 sub ᒍᒘᒊ {};
808 -ᒍᒘᒊ ;
809 EXPECT
810 ########
811 # toke.c [This does not warn any more.]
812 $^W = 0 ;
813 use utf8;
814 use open qw( :utf8 :std );
815 sub ᒍᒘᒊ {} ;
816 -ᒍᒘᒊ ;
817 {
818     no warnings 'ambiguous' ;
819     -ᒍᒘᒊ ;
820     use warnings 'ambiguous' ;
821     -ᒍᒘᒊ ;
822 }
823 -ᒍᒘᒊ ;
824 EXPECT
825 ########
826 # toke.c
827 open FOO || time;
828 open local *FOO; # should be ok
829 EXPECT
830 Precedence problem: open FOO should be open(FOO) at - line 2.
831 ########
832 # toke.c
833 use utf8;
834 use open qw( :utf8 :std );
835 open FÒÒ || time;
836 EXPECT
837 Precedence problem: open FÒÒ should be open(FÒÒ) at - line 4.
838 ########
839 # toke.c
840 use utf8;
841 use open qw( :utf8 :std );
842 open ᒍOO || time;
843 EXPECT
844 Precedence problem: open ᒍOO should be open(ᒍOO) at - line 4.
845 ########
846 # toke.c (and [perl #16184])
847 open FOO => "<&0"; close FOO;
848 EXPECT
849 ########
850 # toke.c
851 $^W = 0 ;
852 open FOO || time;
853 {
854     no warnings 'precedence' ;
855     open FOO || time;
856     use warnings 'precedence' ;
857     open FOO || time;
858 }
859 open FOO || time;
860 open Foo::BAR; # this should not warn
861 EXPECT
862 Precedence problem: open FOO should be open(FOO) at - line 3.
863 Precedence problem: open FOO should be open(FOO) at - line 8.
864 Precedence problem: open FOO should be open(FOO) at - line 10.
865 ########
866 # toke.c
867 $^W = 0 ;
868 use utf8;
869 use open qw( :utf8 :std );
870 open FÒÒ || time;
871 {
872     no warnings 'precedence' ;
873     open FÒÒ || time;
874     use warnings 'precedence' ;
875     open FÒÒ || time;
876 }
877 open FÒÒ || time;
878 EXPECT
879 Precedence problem: open FÒÒ should be open(FÒÒ) at - line 5.
880 Precedence problem: open FÒÒ should be open(FÒÒ) at - line 10.
881 Precedence problem: open FÒÒ should be open(FÒÒ) at - line 12.
882 ########
883 # toke.c
884 use utf8;
885 use open qw( :utf8 :std );
886 $^W = 0 ;
887 open ᒍÒÒ || time;
888 {
889     no warnings 'precedence' ;
890     open ᒍÒÒ || time;
891     use warnings 'precedence' ;
892     open ᒍÒÒ || time;
893 }
894 open ᒍÒÒ || time;
895 EXPECT
896 Precedence problem: open ᒍÒÒ should be open(ᒍÒÒ) at - line 5.
897 Precedence problem: open ᒍÒÒ should be open(ᒍÒÒ) at - line 10.
898 Precedence problem: open ᒍÒÒ should be open(ᒍÒÒ) at - line 12.
899 ########
900 # toke.c
901 $^W = 0 ;
902 *foo *foo ;
903 {
904     no warnings 'ambiguous' ;
905     *foo *foo ;
906     use warnings 'ambiguous' ;
907     *foo *foo ;
908 }
909 *foo *foo ;
910 # These should not warn [perl #117535]:
911 foo**foo ;
912 no warnings 'deprecated';
913 sort $*foo ;
914 sort $ *foo ;
915 EXPECT
916 Operator or semicolon missing before *foo at - line 3.
917 Ambiguous use of * resolved as operator * at - line 3.
918 Operator or semicolon missing before *foo at - line 8.
919 Ambiguous use of * resolved as operator * at - line 8.
920 Operator or semicolon missing before *foo at - line 10.
921 Ambiguous use of * resolved as operator * at - line 10.
922 ########
923 # toke.c
924 $^W = 0 ;
925 %foo %foo ;
926 {
927     no warnings 'ambiguous' ;
928     %foo %foo ;
929     use warnings 'ambiguous' ;
930     %foo %foo ;
931 }
932 %foo %foo ;
933 # This should not produce ambiguity warnings [perl #117535]:
934 sort $%foo ;
935 sort $ %foo ;
936 EXPECT
937 Operator or semicolon missing before %foo at - line 3.
938 Ambiguous use of % resolved as operator % at - line 3.
939 Operator or semicolon missing before %foo at - line 8.
940 Ambiguous use of % resolved as operator % at - line 8.
941 Operator or semicolon missing before %foo at - line 10.
942 Ambiguous use of % resolved as operator % at - line 10.
943 Bareword found where operator expected at - line 12, near "$%foo"
944         (Missing operator before foo?)
945 Bareword found where operator expected at - line 13, near "$ %foo"
946         (Missing operator before foo?)
947 Illegal modulus zero at - line 3.
948 ########
949 # toke.c
950 $^W = 0 ;
951 &foo &foo ;
952 {
953     no warnings 'ambiguous' ;
954     &foo &foo ;
955     use warnings 'ambiguous' ;
956     &foo &foo ;
957 }
958 &foo &foo ;
959 # These should not warn produce ambiguity warnings [perl #76910]:
960 foo&&foo ;
961 sort $&foo ;
962 sort $ &foo ;
963 EXPECT
964 Operator or semicolon missing before &foo at - line 3.
965 Ambiguous use of & resolved as operator & at - line 3.
966 Operator or semicolon missing before &foo at - line 8.
967 Ambiguous use of & resolved as operator & at - line 8.
968 Operator or semicolon missing before &foo at - line 10.
969 Ambiguous use of & resolved as operator & at - line 10.
970 Bareword found where operator expected at - line 13, near "$&foo"
971         (Missing operator before foo?)
972 Bareword found where operator expected at - line 14, near "$ &foo"
973         (Missing operator before foo?)
974 Undefined subroutine &main::foo called at - line 3.
975 ########
976 # toke.c
977 use utf8;
978 use open qw( :utf8 :std );
979 $^W = 0 ;
980 *foo *foo ;
981 {
982     no warnings 'ambiguous' ;
983     *foo *foo ;
984     use warnings 'ambiguous' ;
985     *foo *foo ;
986 }
987 *foo *foo ;
988 EXPECT
989 Operator or semicolon missing before *foo at - line 5.
990 Ambiguous use of * resolved as operator * at - line 5.
991 Operator or semicolon missing before *foo at - line 10.
992 Ambiguous use of * resolved as operator * at - line 10.
993 Operator or semicolon missing before *foo at - line 12.
994 Ambiguous use of * resolved as operator * at - line 12.
995 ########
996 # toke.c
997 use warnings 'misc' ;
998 my $a = "\m" ;
999 no warnings 'misc' ;
1000 $a = "\m" ;
1001 EXPECT
1002 Unrecognized escape \m passed through at - line 3.
1003 ########
1004 # toke.c
1005 use warnings 'misc' ;
1006 my $a = "abcd\E" ;
1007 no warnings 'misc' ;
1008 $a = "abcd\E" ;
1009 EXPECT
1010 Useless use of \E at - line 3.
1011 ########
1012 # toke.c
1013 use feature 'postderef_qq';
1014 (\$_)->$*;
1015 "$_->$*";
1016 (\$_)->$*;
1017 "$_->$*";
1018 EXPECT
1019 ########
1020 # toke.c
1021 use warnings 'portable' ;
1022 my $a =  0b011111111111111111111111111111110 ;
1023    $a =  0b011111111111111111111111111111111 ;
1024    $a =  0b111111111111111111111111111111111 ;
1025    $a =  0x0fffffffe ;
1026    $a =  0x0ffffffff ;
1027    $a =  0x1ffffffff ;
1028    $a =  0037777777776 ;
1029    $a =  0037777777777 ;
1030    $a =  0047777777777 ;
1031 no warnings 'portable' ;
1032    $a =  0b011111111111111111111111111111110 ;
1033    $a =  0b011111111111111111111111111111111 ;
1034    $a =  0b111111111111111111111111111111111 ;
1035    $a =  0x0fffffffe ;
1036    $a =  0x0ffffffff ;
1037    $a =  0x1ffffffff ;
1038    $a =  0037777777776 ;
1039    $a =  0037777777777 ;
1040    $a =  0047777777777 ;
1041 EXPECT
1042 Binary number > 0b11111111111111111111111111111111 non-portable at - line 5.
1043 Hexadecimal number > 0xffffffff non-portable at - line 8.
1044 Octal number > 037777777777 non-portable at - line 11.
1045 ########
1046 # toke.c
1047 use warnings 'overflow' ;
1048 my $a =  0b011111111111111111111111111111110 ;
1049    $a =  0b011111111111111111111111111111111 ;
1050    $a =  0b10000000000000000000000000000000000000000000000000000000000000000 ;
1051    $a =  0x0fffffffe ;
1052    $a =  0x0ffffffff ;
1053    $a =  0x10000000000000000 ;
1054    $a =  0037777777776 ;
1055    $a =  0037777777777 ;
1056    $a =  002000000000000000000000;
1057 no warnings 'overflow' ;
1058    $a =  0b011111111111111111111111111111110 ;
1059    $a =  0b011111111111111111111111111111111 ;
1060    $a =  0b10000000000000000000000000000000000000000000000000000000000000000 ;
1061    $a =  0x0fffffffe ;
1062    $a =  0x0ffffffff ;
1063    $a =  0x10000000000000000 ;
1064    $a =  0037777777776 ;
1065    $a =  0037777777777 ;
1066    $a =  002000000000000000000000;
1067 EXPECT
1068 Integer overflow in binary number at - line 5.
1069 Integer overflow in hexadecimal number at - line 8.
1070 Integer overflow in octal number at - line 11.
1071 ########
1072 # toke.c
1073 BEGIN { $^C = 1; }
1074 dump;
1075 CORE::dump;
1076 EXPECT
1077 dump() better written as CORE::dump(). dump() will no longer be available in Perl 5.30 at - line 3.
1078 - syntax OK
1079 ########
1080 # toke.c
1081 BEGIN { $^C = 1; }
1082 no warnings 'deprecated';
1083 dump;
1084 CORE::dump;
1085 EXPECT
1086 - syntax OK
1087 ########
1088 # toke.c
1089 BEGIN { $^C = 1; }
1090 no warnings 'deprecated';
1091 use warnings 'misc';
1092 dump;
1093 CORE::dump;
1094 EXPECT
1095 dump() better written as CORE::dump(). dump() will no longer be available in Perl 5.30 at - line 5.
1096 - syntax OK
1097 ########
1098 # toke.c
1099 use warnings 'misc';
1100 use subs qw/dump/;
1101 sub dump { print "no warning for overridden dump\n"; }
1102 dump;
1103 EXPECT
1104 no warning for overridden dump
1105 ########
1106 # toke.c
1107 use warnings 'ambiguous';
1108 "@mjd_previously_unused_array";        
1109 no warnings 'ambiguous';
1110 "@mjd_previously_unused_array2";        
1111 EXPECT
1112 Possible unintended interpolation of @mjd_previously_unused_array in string at - line 3.
1113 ########
1114 # toke.c
1115 use utf8;
1116 use open qw( :utf8 :std );
1117 use warnings 'ambiguous';
1118 "@mjd_previously_unused_àrray";        
1119 no warnings 'ambiguous';
1120 "@mjd_previously_unused_àrray2";        
1121 EXPECT
1122 Possible unintended interpolation of @mjd_previously_unused_àrray in string at - line 5.
1123 ########
1124 # toke.c
1125 use utf8;
1126 use open qw( :utf8 :std );
1127 use warnings 'ambiguous';
1128 "@mjd_previously_unused_ぁrrぁy";        
1129 no warnings 'ambiguous';
1130 "@mjd_previously_unused_ぁrrぁy2";        
1131 EXPECT
1132 Possible unintended interpolation of @mjd_previously_unused_ぁrrぁy in string at - line 5.
1133 ########
1134 -w
1135 # toke.c
1136 $_ = "@DB::args";        
1137 EXPECT
1138 ########
1139 # toke.c
1140 # 20020328 mjd-perl-patch+@plover.com at behest of jfriedl@yahoo.com
1141 use warnings 'regexp';
1142 "foo" =~ /foo/c;
1143 "foo" =~ /foo/cg;
1144 no warnings 'regexp';
1145 "foo" =~ /foo/c;
1146 "foo" =~ /foo/cg;
1147 EXPECT
1148 Use of /c modifier is meaningless without /g at - line 4.
1149 ########
1150 # toke.c
1151 # 20020328 mjd-perl-patch+@plover.com at behest of jfriedl@yahoo.com
1152 use warnings 'regexp';
1153 $_ = "ab" ; 
1154 s/ab/ab/c;
1155 s/ab/ab/cg;
1156 no warnings 'regexp';
1157 s/ab/ab/c;
1158 s/ab/ab/cg;
1159 EXPECT
1160 Use of /c modifier is meaningless in s/// at - line 5.
1161 Use of /c modifier is meaningless in s/// at - line 6.
1162 ########
1163 -wa
1164 # toke.c
1165 # 20020414 mjd-perl-patch+@plover.com # -a flag should suppress these warnings
1166 print "@F\n";
1167 EXPECT
1168
1169 ########
1170 -w
1171 # toke.c
1172 # 20020414 mjd-perl-patch+@plover.com # -a flag should suppress these warnings
1173 print "@F\n";
1174 EXPECT
1175 Possible unintended interpolation of @F in string at - line 4.
1176 Name "main::F" used only once: possible typo at - line 4.
1177 ########
1178 -wa
1179 # toke.c
1180 # 20020414 mjd-perl-patch+@plover.com
1181 EXPECT
1182
1183 ########
1184 # toke.c
1185 # 20020414 mjd-perl-patch+@plover.com
1186 # In 5.7.3, this emitted "Possible unintended interpolation" warnings
1187 use warnings 'ambiguous';
1188 $s = "(@-)(@+)";
1189 EXPECT
1190
1191 ########
1192 # toke.c
1193 # mandatory warning
1194 eval q/if ($a) { } elseif ($b) { }/;
1195 no warnings "syntax";
1196 eval q/if ($a) { } elseif ($b) { }/;
1197 EXPECT
1198 elseif should be elsif at (eval 1) line 1.
1199 ########
1200 # toke.c
1201 # mandatory warning
1202 eval q/5 6/;
1203 no warnings "syntax";
1204 eval q/5 6/;
1205 EXPECT
1206 Number found where operator expected at (eval 1) line 1, near "5 6"
1207         (Missing operator before  6?)
1208 ########
1209 # toke.c
1210 use warnings "syntax"; no warnings "deprecated";
1211 $_ = $a = 1;
1212 $a !=~  /1/;
1213 $a !=~ m#1#;
1214 $a !=~/1/;
1215 $a !=~ y/1//;
1216 $a !=~ tr/1//;
1217 $a !=~ s/1//;
1218 $a != ~/1/;
1219 no warnings "syntax";
1220 $a !=~  /1/;
1221 $a !=~ m#1#;
1222 $a !=~/1/;
1223 $a !=~ y/1//;
1224 $a !=~ tr/1//;
1225 $a !=~ s/1//;
1226 EXPECT
1227 !=~ should be !~ at - line 4.
1228 !=~ should be !~ at - line 5.
1229 !=~ should be !~ at - line 6.
1230 !=~ should be !~ at - line 7.
1231 !=~ should be !~ at - line 8.
1232 !=~ should be !~ at - line 9.
1233 ########
1234 # toke.c
1235 use warnings "syntax";
1236 sub proto_after_array(@$);
1237 sub proto_after_arref(\@$);
1238 sub proto_after_arref2(\[@$]);
1239 sub proto_after_arref3(\[@$]_);
1240 sub proto_after_hash(%$);
1241 sub proto_after_hashref(\%$);
1242 sub proto_after_hashref2(\[%$]);
1243 sub underscore_last_pos($_);
1244 sub underscore2($_;$);
1245 sub underscore_fail($_$);
1246 sub underscore_after_at(@_);
1247 our sub hour (@$);
1248 my sub migh (@$);
1249 use feature 'state';
1250 state sub estate (@$);
1251 package other;
1252 sub hour (@$);
1253 sub migh (@$);
1254 sub estate (@$);
1255 no warnings "syntax";
1256 sub proto_after_array(@$);
1257 sub proto_after_hash(%$);
1258 sub underscore_fail($_$);
1259 EXPECT
1260 Prototype after '@' for main::proto_after_array : @$ at - line 3.
1261 Prototype after '%' for main::proto_after_hash : %$ at - line 7.
1262 Illegal character after '_' in prototype for main::underscore_fail : $_$ at - line 12.
1263 Prototype after '@' for main::underscore_after_at : @_ at - line 13.
1264 Prototype after '@' for hour : @$ at - line 14.
1265 Prototype after '@' for migh : @$ at - line 15.
1266 Prototype after '@' for estate : @$ at - line 17.
1267 Prototype after '@' for hour : @$ at - line 19.
1268 Prototype after '@' for migh : @$ at - line 20.
1269 Prototype after '@' for estate : @$ at - line 21.
1270 ########
1271 # toke.c
1272 use warnings "ambiguous";
1273 "foo\nn" =~ /^foo$\n/;
1274 "foo\nn" =~ /^foo${\}n/;
1275 my $foo = qr/^foo$\n/;
1276 my $bar = qr/^foo${\}n/;
1277 no warnings "ambiguous";
1278 "foo\nn" =~ /^foo$\n/;
1279 "foo\nn" =~ /^foo${\}n/;
1280 my $foo = qr/^foo$\n/;
1281 my $bar = qr/^foo${\}n/;
1282 EXPECT
1283 Possible unintended interpolation of $\ in regex at - line 3.
1284 Possible unintended interpolation of $\ in regex at - line 5.
1285 ########
1286 # toke.c
1287 use warnings 'syntax' ;
1288 my $a = "\o";
1289 my $a = "\o{";
1290 my $a = "\o{}";
1291 no warnings 'syntax' ;
1292 my $a = "\o";
1293 my $a = "\o{";
1294 my $a = "\o{}";
1295 EXPECT
1296 Missing braces on \o{} at - line 3, within string
1297 Missing right brace on \o{ at - line 4, within string
1298 Number with no digits at - line 5, within string
1299 BEGIN not safe after errors--compilation aborted at - line 6.
1300 ########
1301 # toke.c
1302 use warnings 'digit' ;
1303 my $a = "\o{1238456}";
1304 no warnings 'digit' ;
1305 my $a = "\o{1238456}";
1306 EXPECT
1307 Non-octal character '8'.  Resolved as "\o{123}" at - line 3.
1308 ########
1309 # toke.c
1310 use warnings;
1311 print ref ? "yes\n" : "no\n" foreach [], ''; # ? is unambiguosly an operator
1312 EXPECT
1313 yes
1314 no
1315 ########
1316 # toke .c
1317 use warnings;
1318 $a =~ ?rand?; # ? is not a regex match
1319 EXPECT
1320 syntax error at - line 3, near "=~ ?"
1321 Execution of - aborted due to compilation errors.
1322 ########
1323 # toke.c
1324 BEGIN {
1325     if (ord('A') == 193) {
1326         print "SKIPPED\n# result varies depending on which ebcdic platform";
1327         exit 0;
1328     }
1329 }
1330 use warnings;
1331 $a = "\c,";
1332 $a = "\c`";
1333 no warnings 'syntax';
1334 $a = "\c,";
1335 $a = "\c`";
1336 EXPECT
1337 "\c," is more clearly written simply as "l" at - line 9.
1338 "\c`" is more clearly written simply as "\ " at - line 10.
1339 ########
1340 # toke.c
1341 BEGIN {
1342     if (ord('A') == 193) {
1343         print "SKIPPED\n# test is ASCII-specific";
1344         exit 0;
1345     }
1346 }
1347 use warnings;
1348 my $a = "\c{ack}";
1349 EXPECT
1350 OPTION fatal
1351 Use ";" instead of "\c{" at - line 9.
1352 ########
1353 # toke.c
1354 BEGIN {
1355     if (ord('A') == 65) {
1356         print "SKIPPED\n# test is EBCDIC-specific";
1357         exit 0;
1358     }
1359 }
1360 use warnings;
1361 my $a = "\c{ack}";
1362 EXPECT
1363 OPTION fatal
1364 Sequence "\c{" invalid at - line 9.
1365 ########
1366 # toke.c
1367 my $a = "\câ";
1368 EXPECT
1369 OPTION fatal
1370 Character following "\c" must be printable ASCII at - line 2.
1371 ########
1372 # toke.c
1373 use warnings 'syntax' ;
1374 my $a = qr/foo/du;
1375 $a = qr/foo/lai;
1376 $a = qr/foo/lil;
1377 $a = qr/foo/aia;
1378 $a = qr/foo/aaia;
1379 no warnings 'syntax' ;
1380 my $a = qr/foo/du;
1381 EXPECT
1382 Regexp modifiers "/d" and "/u" are mutually exclusive at - line 3, near "= "
1383 Regexp modifiers "/l" and "/a" are mutually exclusive at - line 4, near "= "
1384 Regexp modifier "/l" may not appear twice at - line 5, near "= "
1385 Regexp modifier "/a" may appear a maximum of twice at - line 7, near "= "
1386 BEGIN not safe after errors--compilation aborted at - line 8.
1387 ########
1388 # toke.c
1389 # [perl #4362]
1390 eval "print q\xabfoo";
1391 print "ok\n" if
1392     $@ =~ /Can't find string terminator "\xab" anywhere before EOF/;
1393 EXPECT
1394 ok
1395 ########
1396 # toke.c
1397 use utf8;
1398 use open qw( :utf8 :std );
1399 use warnings 'ambiguous' ;
1400 sub frèd {}
1401 $a = ${frèd} ;
1402 no warnings 'ambiguous' ;
1403 $a = ${frèd} ;
1404 EXPECT
1405 Ambiguous use of ${frèd} resolved to $frèd at - line 6.
1406 ########
1407 # toke.c
1408 use utf8;
1409 use open qw( :utf8 :std );
1410 use warnings 'ambiguous' ;
1411 sub f렏 {}
1412 $a = ${f렏} ;
1413 no warnings 'ambiguous' ;
1414 $a = ${f렏} ;
1415 EXPECT
1416 Ambiguous use of ${f렏} resolved to $f렏 at - line 6.
1417 ########
1418 # toke.c
1419 use utf8;
1420 use open qw( :utf8 :std );
1421 use warnings;
1422 CORE::렏;
1423 EXPECT
1424 CORE::렏 is not a keyword at - line 5.
1425 ########
1426 # toke.c
1427 # [perl #16249]
1428 print '';
1429 eval this_method_is_fake ();
1430 EXPECT
1431 Undefined subroutine &main::this_method_is_fake called at - line 4.
1432 ########
1433 # toke.c
1434 # [perl #107002] Erroneous ambiguity warnings
1435 sub { # do not actually call require
1436   require a::b . 1; # These used to produce erroneous
1437   require a::b + 1; # ambiguity warnings.
1438 }
1439 EXPECT
1440 ########
1441 # toke.c
1442 # [perl #113094], [perl #119101], since reverted so no warnings generated
1443 use warnings;
1444 print "aa" =~ m{^a\{1,2\}$}, "A\n";
1445 print "aa" =~ m{^a\x\{61\}$}, "B\n";
1446 print "a\\x{6F}" =~ m{^a\\x\{6F\}$}, "C\n";
1447 print "a\\o" =~ m{^a\\\x\{6F\}$}, "D\n";
1448 print "a\\\\x{6F}" =~ m{^a\\\\x\{6F\}$}, "E\n";
1449 print "a\\\\o"     =~ m{^a\\\\\x\{6F\}$}, "F\n";
1450 print "aa" =~ m{^a{1,2}$}, "G\n";
1451 print "aq" =~ m[^a\[a-z\]$], "H\n";
1452 print "aq" =~ m(^a\(q\)$), "I\n";
1453 EXPECT
1454 Illegal hexadecimal digit '\' ignored at - line 5.
1455 Illegal hexadecimal digit '\' ignored at - line 7.
1456 Illegal hexadecimal digit '\' ignored at - line 9.
1457 A
1458 B
1459 1C
1460 D
1461 1E
1462 F
1463 1G
1464 H
1465 I
1466 ########
1467 # toke.c
1468 #[perl #119123] disallow literal control character variables
1469 *{
1470     Foo
1471 }; # shouldn't warn on {\n, even though \n is a control character
1472 EXPECT
1473 ########
1474 # toke.c
1475 # [perl #120288] -X at start of line gave spurious warning, where X is not
1476 # a filetest operator
1477 -a;
1478 ;-a;
1479 EXPECT
1480 ########
1481 # toke.c
1482 # [perl #124113] Compile-time warning with UTF8 variable in array index
1483 use warnings;
1484 use utf8;
1485 my $𝛃 = 0;
1486 my @array = (0);
1487 my $v = $array[ 0 + $𝛃 ];
1488    $v = $array[ $𝛃 + 0 ];
1489 EXPECT
1490 ########
1491 # toke.c
1492 # Allow Unicode here doc boundaries
1493 use warnings;
1494 use utf8;
1495 my $v = <<EnFraçais;
1496 Comme ca!
1497 EnFraçais
1498 print $v;
1499 EXPECT
1500 Comme ca!
1501 ########
1502 # toke.c
1503 # Fix 'Use of "..." without parentheses is ambiguous' warning for
1504 # Unicode function names.  If not under PERL_UNICODE, this will generate
1505 # a "Wide character" warning
1506 use utf8;
1507 use warnings;
1508 sub 𝛃(;$) { return 0; }
1509 my $v = 𝛃 - 5;
1510 EXPECT
1511 OPTION regex
1512 (Wide character.*\n)?Warning: Use of "𝛃" without parentheses is ambiguous
1513 ########
1514 # RT #4346 Case 1: Warnings for print (...)
1515 # TODO RT #4346: Warnings for print(...) are inconsistent
1516 use warnings;
1517 print ("((\n");
1518 print (">>\n");
1519 EXPECT
1520 print (...) interpreted as function at - line 3.
1521 print (...) interpreted as function at - line 4.
1522 ((
1523 >>
1524 ########
1525 # RT #4346 Case 2: Warnings for print (...)
1526 use warnings;
1527 print ("((\n");
1528 print (">>\n")
1529 EXPECT
1530 print (...) interpreted as function at - line 3.
1531 print (...) interpreted as function at - line 4.
1532 ((
1533 >>
1534 ########
1535 # RT #4346 Case 3: Warnings for print (...)
1536 # TODO RT #4346: Warnings for print(...) are inconsistent
1537 use warnings;
1538 print (">>\n");
1539 print ("((\n");
1540 EXPECT
1541 print (...) interpreted as function at - line 3.
1542 print (...) interpreted as function at - line 4.
1543 >>
1544 ((
1545 ########
1546 # RT #4346 Case 4: Warnings for print (...)
1547 # TODO RT #4346: Warnings for print(...) are inconsistent
1548 use warnings;
1549 print (")\n");
1550 print ("))\n");
1551 EXPECT
1552 print (...) interpreted as function at - line 3.
1553 print (...) interpreted as function at - line 4.
1554 )
1555 ))
1556 ########
1557 # NAME  Non-grapheme delimiters
1558 BEGIN{
1559     if (ord('A') == 193) {
1560         print "SKIPPED\n# ebcdic platforms generates different Malformed UTF-8 warnings.";
1561         exit 0;
1562     }
1563 }
1564 use utf8;
1565 my $a = qr ̂foobar̂;
1566 EXPECT
1567 Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl 5.30 at - line 8.
1568 ########
1569 # NAME  [perl #130567] Assertion failure
1570 BEGIN {
1571     if (ord('A') != 65) {
1572         print "SKIPPED\n# test is ASCII-specific";
1573         exit 0;
1574     }
1575 }
1576 no warnings "uninitialized";
1577 $_= "";
1578 s//\3000/;
1579 s//"\x{180};;s\221(*$@$`\241\275";/gee;
1580 s//"s\221\302\302\302\302\302\302\302$@\241\275";/gee;
1581 EXPECT
1582 ########
1583 # NAME  [perl #130666] Assertion failure
1584 no warnings "uninitialized";
1585 BEGIN{$^H=-1};my $l; s\0$0[$l]\0\0
1586 EXPECT
1587 ########
1588 # NAME  [perl #129036] Assertion failure
1589 BEGIN{$0="";$^H=hex join""=>A00000}p?
1590 EXPECT
1591 OPTION fatal
1592 syntax error at - line 1, at EOF
1593 Execution of - aborted due to compilation errors.
1594 ########
1595 # NAME  [perl #130655]
1596 use utf8;
1597 qw∘foo ∞ ♥ bar∘
1598 EXPECT