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