1 pad.c AOK 2 3 "%s" variable %s masks earlier declaration in same scope 4 my $x; 5 my $x ; 6 7 Variable "%s" will not stay shared 8 sub x { 9 my $x; 10 sub y { 11 sub { $x } 12 } 13 } 14 15 sub x { 16 my $x; 17 sub y { 18 $x 19 } 20 } 21 22 "our" variable %s redeclared (Did you mean "local" instead of "our"?) 23 our $x; 24 { 25 our $x; 26 } 27 28 %s never introduced [pad_leavemy] TODO 29 30__END__ 31# pad.c 32use warnings 'misc' ; 33my $x ; 34my $x ; 35my $y = my $y ; 36my $p ; 37package X ; 38my $p ; 39package main ; 40no warnings 'misc' ; 41my $x ; 42my $y ; 43my $p ; 44EXPECT 45"my" variable $x masks earlier declaration in same scope at - line 4. 46"my" variable $y masks earlier declaration in same statement at - line 5. 47"my" variable $p masks earlier declaration in same scope at - line 8. 48######## 49# pad.c 50use warnings 'misc' ; 51our $x ; 52my $x ; 53our $y = my $y ; 54our $p ; 55package X ; 56my $p ; 57package main ; 58no warnings 'misc' ; 59our $z ; 60my $z ; 61our $t = my $t ; 62our $q ; 63package X ; 64my $q ; 65EXPECT 66"my" variable $x masks earlier declaration in same scope at - line 4. 67"my" variable $y masks earlier declaration in same statement at - line 5. 68"my" variable $p masks earlier declaration in same scope at - line 8. 69######## 70# pad.c 71use warnings 'misc' ; 72my $x ; 73our $x ; 74my $y = our $y ; 75my $p ; 76package X ; 77our $p ; 78package main ; 79no warnings 'misc' ; 80my $z ; 81our $z ; 82my $t = our $t ; 83my $q ; 84package X ; 85our $q ; 86EXPECT 87"our" variable $x masks earlier declaration in same scope at - line 4. 88"our" variable $y masks earlier declaration in same statement at - line 5. 89"our" variable $p masks earlier declaration in same scope at - line 8. 90######## 91# pad.c 92use warnings 'closure' ; 93sub x { 94 my $x; 95 sub y { 96 $x 97 } 98 } 99EXPECT 100Variable "$x" will not stay shared at - line 7. 101######## 102# pad.c 103no warnings 'closure' ; 104sub x { 105 my $x; 106 sub y { 107 $x 108 } 109 } 110EXPECT 111 112######## 113# pad.c 114use warnings 'closure' ; 115sub x { 116 my $x; 117 sub y { 118 sub { $x } 119 } 120 } 121EXPECT 122Variable "$x" will not stay shared at - line 6. 123######## 124# pad.c 125use warnings 'closure' ; 126sub x { 127 my $x; 128 sub { 129 $x; 130 sub y { 131 $x 132 } 133 }->(); 134} 135EXPECT 136Variable "$x" will not stay shared at - line 9. 137######## 138# pad.c 139use warnings 'closure' ; 140my $x; 141sub { 142 $x; 143 sub f { 144 sub { $x }->(); 145 } 146}->(); 147EXPECT 148 149######## 150# pad.c 151use warnings 'closure' ; 152sub { 153 my $x; 154 sub f { $x } 155}->(); 156EXPECT 157Variable "$x" is not available at - line 5. 158######## 159# pad.c 160use warnings 'closure' ; 161sub { 162 my $x; 163 eval 'sub f { $x }'; 164}->(); 165EXPECT 166 167######## 168# pad.c 169use warnings 'closure' ; 170sub { 171 my $x; 172 sub f { eval '$x' } 173}->(); 174f(); 175EXPECT 176Variable "$x" is not available at (eval 1) line 1. 177######## 178# pad.c 179use warnings 'closure' ; 180sub x { 181 our $x; 182 sub y { 183 $x 184 } 185 } 186EXPECT 187 188######## 189# pad.c 190# see bugid 1754 191use warnings 'closure' ; 192sub f { 193 my $x; 194 sub { eval '$x' }; 195} 196f()->(); 197EXPECT 198Variable "$x" is not available at (eval 1) line 1. 199######## 200use warnings 'closure' ; 201{ 202 my $x = 1; 203 $y = \$x; # force abandonment rather than clear-in-place at scope exit 204 sub f2 { eval '$x' } 205} 206f2(); 207EXPECT 208Variable "$x" is not available at (eval 1) line 1. 209######## 210use warnings 'closure' ; 211for my $x (1,2,3) { 212 sub f { eval '$x' } 213 f(); 214} 215f(); 216EXPECT 217Variable "$x" is not available at (eval 4) line 1. 218######## 219# pad.c 220no warnings 'closure' ; 221sub x { 222 my $x; 223 sub y { 224 sub { $x } 225 } 226 } 227EXPECT 228 229######## 230use warnings 'misc' ; 231my $x; 232{ 233 my $x; 234} 235EXPECT 236######## 237# pad.c 238use warnings 'misc' ; 239our $x ; 240our $x ; 241our $y = our $y ; 242our $p ; 243package X ; 244our $p ; 245package main ; 246no warnings 'misc' ; 247our $a ; 248our $a ; 249our $b = our $b ; 250our $c ; 251package X ; 252our $c ; 253EXPECT 254"our" variable $x redeclared at - line 4. 255"our" variable $y redeclared at - line 5. 256######## 257use warnings 'misc' ; 258our $x; 259{ 260 our $x; 261} 262our $x; 263no warnings 'misc' ; 264our $y; 265{ 266 our $y; 267} 268our $y; 269EXPECT 270"our" variable $x redeclared at - line 4. 271 (Did you mean "local" instead of "our"?) 272"our" variable $x redeclared at - line 6. 273######## 274use warnings 'misc' ; 275our $x; 276{ 277 my $x; 278} 279no warnings 'misc' ; 280our $y; 281{ 282 my $y; 283} 284EXPECT 285######## 286use warnings 'misc' ; 287my $x; 288{ 289 our $x; 290} 291no warnings 'misc' ; 292my $y; 293{ 294 our $y; 295} 296EXPECT 297######## 298use warnings 'misc' ; 299my $x; 300{ 301 my $x; 302} 303no warnings 'misc' ; 304my $y; 305{ 306 my $y; 307} 308EXPECT 309######## 310# an our var being introduced should suppress errors about global syms 311use strict; 312use warnings; 313our $x unless $x; 314EXPECT 315######## 316use warnings 'misc'; 317our $qunckkk; 318our $_; 319package clank_est; 320our $qunckkk; 321our $_; 322no warnings 'misc'; 323our $ouch; 324our $_; 325package whack; 326our $ouch; 327our $_; 328EXPECT 329"our" variable $_ redeclared at - line 6. 330######## 331use warnings 'misc'; 332BEGIN { binmode STDERR, 'utf8'; } 333{ 334 use utf8; 335 my $ニコニコ; 336 my $ニコニコ; 337} 338EXPECT 339"my" variable $ニコニコ masks earlier declaration in same scope at - line 6. 340######## 341use warnings 'misc'; 342BEGIN { binmode STDERR, 'utf8'; } 343{ 344 use utf8; 345 my $thìs; 346 my $thìs; 347} 348EXPECT 349"my" variable $thìs masks earlier declaration in same scope at - line 6. 350######## 351# pad.c 352use warnings 'closure' ; 353BEGIN { binmode STDERR, 'utf8'; } 354sub { 355 use utf8; 356 my $è; 357 sub f { $è } 358}->(); 359EXPECT 360Variable "$è" is not available at - line 7. 361######## 362# pad.c 363use warnings 'closure' ; 364BEGIN { binmode STDERR, 'utf8'; } 365sub { 366 use utf8; 367 my $ニ; 368 sub f { $ニ } 369}->(); 370EXPECT 371Variable "$ニ" is not available at - line 7. 372######## 373# pad.c 374use warnings 'closure' ; 375BEGIN { binmode STDERR, 'utf8'; } 376sub x { 377 use utf8; 378 my $に; 379 sub y { 380 $に 381 } 382 } 383EXPECT 384Variable "$に" will not stay shared at - line 9. 385######## 386# pad.c 387use warnings 'closure' ; 388BEGIN { binmode STDERR, 'utf8'; } 389sub x { 390 use utf8; 391 my $に; 392 sub y { 393 sub { $に } 394 } 395 } 396EXPECT 397Variable "$に" will not stay shared at - line 8. 398######## 399# pad.c 400use warnings 'closure' ; 401BEGIN { binmode STDERR, 'utf8'; } 402sub x { 403 use utf8; 404 my $に; 405 sub { 406 $に; 407 sub y { 408 $に 409 } 410 }->(); 411} 412EXPECT 413Variable "$に" will not stay shared at - line 11. 414######## 415# pad.c 416use warnings 'closure' ; 417BEGIN { binmode STDERR, 'utf8'; } 418sub { 419 use utf8; 420 my $に; 421 sub f { $に } 422}->(); 423EXPECT 424Variable "$に" is not available at - line 7. 425######## 426# pad.c 427use warnings 'closure' ; 428BEGIN { binmode STDERR, 'utf8'; } 429sub { 430 use utf8; 431 my $に; 432 sub f { eval '$に' } 433}->(); 434f(); 435EXPECT 436Variable "$に" is not available at (eval 1) line 1. 437######## 438# pad.c 439# see bugid 1754 440use warnings 'closure' ; 441BEGIN { binmode STDERR, 'utf8'; } 442sub f { 443 use utf8; 444 my $に; 445 sub { eval '$に' }; 446} 447f()->(); 448EXPECT 449Variable "$に" is not available at (eval 1) line 1. 450######## 451use warnings 'closure' ; 452BEGIN { binmode STDERR, 'utf8'; } 453{ 454 use utf8; 455 my $に = 1; 456 $y = \$に; # force abandonment rather than clear-in-place at scope exit 457 sub f2 { eval '$に' } 458} 459f2(); 460EXPECT 461Variable "$に" is not available at (eval 1) line 1. 462######## 463use warnings 'closure' ; 464BEGIN { binmode STDERR, 'utf8'; } 465use utf8; 466for my $に (1,2,3) { 467 sub f { eval '$に' } 468 f(); 469} 470f(); 471EXPECT 472Variable "$に" is not available at (eval 4) line 1. 473######## 474# pad.c 475use warnings 'closure' ; 476BEGIN { binmode STDERR, 'utf8'; } 477sub x { 478 use utf8; 479 my $è; 480 sub y { 481 $è 482 } 483 } 484EXPECT 485Variable "$è" will not stay shared at - line 9. 486######## 487# pad.c 488use warnings 'closure' ; 489BEGIN { binmode STDERR, 'utf8'; } 490sub x { 491 use utf8; 492 my $è; 493 sub y { 494 sub { $è } 495 } 496 } 497EXPECT 498Variable "$è" will not stay shared at - line 8. 499######## 500# pad.c 501use warnings 'closure' ; 502BEGIN { binmode STDERR, 'utf8'; } 503sub x { 504 use utf8; 505 my $è; 506 sub { 507 $è; 508 sub y { 509 $è 510 } 511 }->(); 512} 513EXPECT 514Variable "$è" will not stay shared at - line 11. 515######## 516# pad.c 517use warnings 'closure' ; 518BEGIN { binmode STDERR, 'utf8'; } 519sub { 520 use utf8; 521 my $è; 522 sub f { $è } 523}->(); 524EXPECT 525Variable "$è" is not available at - line 7. 526######## 527# pad.c 528use warnings 'closure' ; 529BEGIN { binmode STDERR, 'utf8'; } 530sub { 531 use utf8; 532 my $è; 533 sub f { eval '$è' } 534}->(); 535f(); 536EXPECT 537Variable "$è" is not available at (eval 1) line 1. 538######## 539# pad.c 540# see bugid 1754 541use warnings 'closure' ; 542BEGIN { binmode STDERR, 'utf8'; } 543sub f { 544 use utf8; 545 my $è; 546 sub { eval '$è' }; 547} 548f()->(); 549EXPECT 550Variable "$è" is not available at (eval 1) line 1. 551######## 552use warnings 'closure' ; 553BEGIN { binmode STDERR, 'utf8'; } 554{ 555 use utf8; 556 my $è = 1; 557 $y = \$è; # force abandonment rather than clear-in-place at scope exit 558 sub f2 { eval '$è' } 559} 560f2(); 561EXPECT 562Variable "$è" is not available at (eval 1) line 1. 563######## 564use warnings 'closure' ; 565BEGIN { binmode STDERR, 'utf8'; } 566use utf8; 567for my $è (1,2,3) { 568 sub f { eval '$è' } 569 f(); 570} 571f(); 572EXPECT 573Variable "$è" is not available at (eval 4) line 1. 574######## 575