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