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