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