1Check FATAL functionality 2 3__END__ 4 5# Check compile time warning 6use warnings FATAL => 'syntax' ; 7{ 8 no warnings ; 9 $a =+ 1 ; 10} 11$a =+ 1 ; 12print STDERR "The End.\n" ; 13EXPECT 14Reversed += operator at - line 8. 15######## 16 17# Check compile time warning 18use warnings FATAL => 'all' ; 19{ 20 no warnings ; 21 my $a =+ 1 ; 22} 23my $a =+ 1 ; 24print STDERR "The End.\n" ; 25EXPECT 26Reversed += operator at - line 8. 27######## 28 29# Check runtime scope of pragma 30use warnings FATAL => 'uninitialized' ; 31{ 32 no warnings ; 33 my $b ; chop $b ; 34} 35my $b ; chop $b ; 36print STDERR "The End.\n" ; 37EXPECT 38Use of uninitialized value $b in scalar chop at - line 8. 39######## 40 41# Check runtime scope of pragma 42use warnings FATAL => 'all' ; 43{ 44 no warnings ; 45 my $b ; chop $b ; 46} 47my $b ; chop $b ; 48print STDERR "The End.\n" ; 49EXPECT 50Use of uninitialized value $b in scalar chop at - line 8. 51######## 52 53# Check runtime scope of pragma 54no warnings ; 55{ 56 use warnings FATAL => 'uninitialized' ; 57 $a = sub { my $b ; chop $b ; } 58} 59&$a ; 60print STDERR "The End.\n" ; 61EXPECT 62Use of uninitialized value $b in scalar chop at - line 6. 63######## 64 65# Check runtime scope of pragma 66no warnings ; 67{ 68 use warnings FATAL => 'all' ; 69 $a = sub { my $b ; chop $b ; } 70} 71&$a ; 72print STDERR "The End.\n" ; 73EXPECT 74Use of uninitialized value $b in scalar chop at - line 6. 75######## 76 77--FILE-- abc 78$a =+ 1 ; 791; 80--FILE-- 81use warnings FATAL => 'syntax' ; 82require "./abc"; 83EXPECT 84 85######## 86 87--FILE-- abc 88use warnings FATAL => 'syntax' ; 891; 90--FILE-- 91require "./abc"; 92$a =+ 1 ; 93EXPECT 94 95######## 96 97--FILE-- abc 98use warnings 'syntax' ; 99$a =+ 1 ; 1001; 101--FILE-- 102use warnings FATAL => 'uninitialized' ; 103require "./abc"; 104my $a ; chop $a ; 105print STDERR "The End.\n" ; 106EXPECT 107Reversed += operator at ./abc line 2. 108Use of uninitialized value $a in scalar chop at - line 3. 109######## 110 111--FILE-- abc.pm 112use warnings 'syntax' ; 113$a =+ 1 ; 1141; 115--FILE-- 116use warnings FATAL => 'uninitialized' ; 117use abc; 118my $a ; chop $a ; 119print STDERR "The End.\n" ; 120EXPECT 121Reversed += operator at abc.pm line 2. 122Use of uninitialized value $a in scalar chop at - line 3. 123######## 124 125# Check scope of pragma with eval 126no warnings ; 127eval { 128 use warnings FATAL => 'uninitialized' ; 129 my $b ; chop $b ; 130}; print STDERR "-- $@" ; 131my $b ; chop $b ; 132print STDERR "The End.\n" ; 133EXPECT 134-- Use of uninitialized value $b in scalar chop at - line 6. 135The End. 136######## 137 138# Check scope of pragma with eval 139use warnings FATAL => 'uninitialized' ; 140eval { 141 my $b ; chop $b ; 142}; print STDERR "-- $@" ; 143my $b ; chop $b ; 144print STDERR "The End.\n" ; 145EXPECT 146-- Use of uninitialized value $b in scalar chop at - line 5. 147Use of uninitialized value $b in scalar chop at - line 7. 148######## 149 150# Check scope of pragma with eval 151use warnings FATAL => 'uninitialized' ; 152eval { 153 no warnings ; 154 my $b ; chop $b ; 155}; print STDERR $@ ; 156my $b ; chop $b ; 157print STDERR "The End.\n" ; 158EXPECT 159Use of uninitialized value $b in scalar chop at - line 8. 160######## 161 162# Check scope of pragma with eval 163no warnings ; 164eval { 165 use warnings FATAL => 'syntax' ; 166 $a =+ 1 ; 167}; print STDERR "-- $@" ; 168$a =+ 1 ; 169print STDERR "The End.\n" ; 170EXPECT 171Reversed += operator at - line 6. 172######## 173 174# Check scope of pragma with eval 175use warnings FATAL => 'syntax' ; 176eval { 177 $a =+ 1 ; 178}; print STDERR "-- $@" ; 179$a =+ 1 ; 180print STDERR "The End.\n" ; 181EXPECT 182Reversed += operator at - line 5. 183######## 184 185# Check scope of pragma with eval 186use warnings FATAL => 'syntax' ; 187eval { 188 no warnings ; 189 $a =+ 1 ; 190}; print STDERR $@ ; 191$a =+ 1 ; 192print STDERR "The End.\n" ; 193EXPECT 194Reversed += operator at - line 8. 195######## 196 197# Check scope of pragma with eval 198no warnings ; 199eval { 200 use warnings FATAL => 'syntax' ; 201}; print STDERR $@ ; 202$a =+ 1 ; 203print STDERR "The End.\n" ; 204EXPECT 205The End. 206######## 207 208# Check scope of pragma with eval 209no warnings ; 210eval q[ 211 use warnings FATAL => 'uninitialized' ; 212 my $b ; chop $b ; 213]; print STDERR "-- $@"; 214my $b ; chop $b ; 215print STDERR "The End.\n" ; 216EXPECT 217-- Use of uninitialized value $b in scalar chop at (eval 1) line 3. 218The End. 219######## 220 221# Check scope of pragma with eval 222use warnings FATAL => 'uninitialized' ; 223eval ' 224 my $b ; chop $b ; 225'; print STDERR "-- $@" ; 226my $b ; chop $b ; 227print STDERR "The End.\n" ; 228EXPECT 229-- Use of uninitialized value $b in scalar chop at (eval 1) line 2. 230Use of uninitialized value $b in scalar chop at - line 7. 231######## 232 233# Check scope of pragma with eval 234use warnings FATAL => 'uninitialized' ; 235eval ' 236 no warnings ; 237 my $b ; chop $b ; 238'; print STDERR $@ ; 239my $b ; chop $b ; 240print STDERR "The End.\n" ; 241EXPECT 242Use of uninitialized value $b in scalar chop at - line 8. 243######## 244 245# Check scope of pragma with eval 246no warnings ; 247eval q[ 248 use warnings FATAL => 'syntax' ; 249 $a =+ 1 ; 250]; print STDERR "-- $@"; 251$a =+ 1 ; 252print STDERR "The End.\n" ; 253EXPECT 254-- Reversed += operator at (eval 1) line 3. 255The End. 256######## 257 258# Check scope of pragma with eval 259use warnings FATAL => 'syntax' ; 260eval ' 261 $a =+ 1 ; 262'; print STDERR "-- $@"; 263print STDERR "The End.\n" ; 264EXPECT 265-- Reversed += operator at (eval 1) line 2. 266The End. 267######## 268 269# Check scope of pragma with eval 270use warnings FATAL => 'syntax' ; 271eval ' 272 no warnings ; 273 $a =+ 1 ; 274'; print STDERR "-- $@"; 275$a =+ 1 ; 276print STDERR "The End.\n" ; 277EXPECT 278Reversed += operator at - line 8. 279######## 280# TODO ? !$Config{usethreads} && $::UTF8 && ($ENV{PERL_DESTRUCT_LEVEL} || 0) > 1 ? "Parser leaks OPs, which leak shared hash keys" : '' 281 282use warnings 'void' ; 283 284time ; 285 286{ 287 use warnings FATAL => qw(void) ; 288 length "abc" ; 289} 290 291join "", 1,2,3 ; 292 293print "done\n" ; 294EXPECT 295Useless use of time in void context at - line 4. 296Useless use of length in void context at - line 8. 297######## 298# TODO ? !$Config{usethreads} && $::UTF8 && ($ENV{PERL_DESTRUCT_LEVEL} || 0) > 1 ? "Parser leaks OPs, which leak shared hash keys" : '' 299 300use warnings ; 301 302time ; 303 304{ 305 use warnings FATAL => qw(void) ; 306 length "abc" ; 307} 308 309join "", 1,2,3 ; 310 311print "done\n" ; 312EXPECT 313Useless use of time in void context at - line 4. 314Useless use of length in void context at - line 8. 315######## 316 317use warnings FATAL => 'all'; 318{ 319 no warnings; 320 my $b ; chop $b; 321 { 322 use warnings ; 323 my $b ; chop $b; 324 } 325} 326my $b ; chop $b; 327print STDERR "The End.\n" ; 328EXPECT 329Use of uninitialized value $b in scalar chop at - line 8. 330Use of uninitialized value $b in scalar chop at - line 11. 331######## 332 333use warnings FATAL => 'all'; 334{ 335 no warnings FATAL => 'all'; 336 my $b ; chop $b; 337 { 338 use warnings ; 339 my $b ; chop $b; 340 } 341} 342my $b ; chop $b; 343print STDERR "The End.\n" ; 344EXPECT 345Use of uninitialized value $b in scalar chop at - line 8. 346Use of uninitialized value $b in scalar chop at - line 11. 347######## 348 349use warnings FATAL => 'all'; 350{ 351 no warnings 'syntax'; 352 { 353 use warnings ; 354 my $b ; chop $b; 355 } 356} 357my $b ; chop $b; 358print STDERR "The End.\n" ; 359EXPECT 360Use of uninitialized value $b in scalar chop at - line 7. 361######## 362 363use warnings FATAL => 'syntax', NONFATAL => 'void' ; 364 365length "abc"; 366print STDERR "The End.\n" ; 367EXPECT 368Useless use of length in void context at - line 4. 369The End. 370######## 371 372use warnings FATAL => 'all', NONFATAL => 'void' ; 373 374length "abc"; 375print STDERR "The End.\n" ; 376EXPECT 377Useless use of length in void context at - line 4. 378The End. 379######## 380 381use warnings FATAL => 'all', NONFATAL => 'void' ; 382 383my $a ; chomp $a; 384length "abc"; 385print STDERR "The End.\n" ; 386EXPECT 387Useless use of length in void context at - line 5. 388Use of uninitialized value $a in scalar chomp at - line 4. 389######## 390 391use warnings FATAL => 'void', NONFATAL => 'void' ; 392 393length "abc"; 394print STDERR "The End.\n" ; 395EXPECT 396Useless use of length in void context at - line 4. 397The End. 398######## 399# TODO ? !$Config{usethreads} && $::UTF8 && ($ENV{PERL_DESTRUCT_LEVEL} || 0) > 1 ? "Parser leaks OPs, which leak shared hash keys" : '' 400 401use warnings NONFATAL => 'void', FATAL => 'void' ; 402 403length "abc"; 404print STDERR "The End.\n" ; 405EXPECT 406Useless use of length in void context at - line 4. 407######## 408 409use warnings FATAL => 'all', NONFATAL => 'io'; 410no warnings 'once'; 411 412open(F, "<true\ncd"); 413close "fred" ; 414print STDERR "The End.\n" ; 415EXPECT 416Unsuccessful open on filename containing newline at - line 5. 417close() on unopened filehandle fred at - line 6. 418The End. 419######## 420 421use warnings FATAL => 'all', NONFATAL => 'io', FATAL => 'unopened' ; 422no warnings 'once'; 423 424open(F, "<true\ncd"); 425close "fred" ; 426print STDERR "The End.\n" ; 427EXPECT 428Unsuccessful open on filename containing newline at - line 5. 429close() on unopened filehandle fred at - line 6. 430