Check lexical warnings functionality
TODO
check that the warning hierarchy works.
__END__
# check illegal category is caught
use warnings 'this-should-never-be-a-warning-category' ;
EXPECT
Unknown warnings category 'this-should-never-be-a-warning-category' at - line 3.
BEGIN failed--compilation aborted at - line 3.
########
# Check compile time scope of pragma
use warnings 'syntax' ;
{
no warnings ;
my $a =+ 1 ;
}
my $a =+ 1 ;
EXPECT
Reversed += operator at - line 8.
########
# Check compile time scope of pragma
no warnings;
{
use warnings 'syntax' ;
my $a =+ 1 ;
}
my $a =+ 1 ;
EXPECT
Reversed += operator at - line 6.
########
# Check runtime scope of pragma
use warnings 'uninitialized' ;
{
no warnings ;
my $b ; chop $b ;
}
my $b ; chop $b ;
EXPECT
Use of uninitialized value $b in scalar chop at - line 8.
########
# Check runtime scope of pragma
no warnings ;
{
use warnings 'uninitialized' ;
my $b ; chop $b ;
}
my $b ; chop $b ;
EXPECT
Use of uninitialized value $b in scalar chop at - line 6.
########
# Check runtime scope of pragma
no warnings ;
{
use warnings 'uninitialized' ;
$a = sub { my $b ; chop $b ; }
}
&$a ;
EXPECT
Use of uninitialized value $b in scalar chop at - line 6.
########
use warnings 'syntax' ;
my $a =+ 1 ;
EXPECT
Reversed += operator at - line 3.
########
-w
no warnings 'reserved' ;
foo.bar;
EXPECT
Useless use of a constant ("foobar") in void context at - line 3.
########
--FILE-- abc
my $a =+ 1 ;
1;
--FILE--
use warnings 'syntax' ;
require "./abc";
EXPECT
########
--FILE-- abc
use warnings 'syntax' ;
1;
--FILE--
require "./abc";
my $a =+ 1 ;
EXPECT
########
--FILE-- abc
use warnings 'syntax' ;
my $a =+ 1 ;
1;
--FILE--
use warnings 'uninitialized' ;
require "./abc";
my $a ; chop $a ;
EXPECT
Reversed += operator at ./abc line 2.
Use of uninitialized value $a in scalar chop at - line 3.
########
--FILE-- abc.pm
use warnings 'syntax' ;
my $a =+ 1 ;
1;
--FILE--
use warnings 'uninitialized' ;
use abc;
my $a ; chop $a ;
EXPECT
Reversed += operator at abc.pm line 2.
Use of uninitialized value $a in scalar chop at - line 3.
########
# Check scope of pragma with eval
use warnings;
{
no warnings ;
eval {
my $b ; chop $b ;
}; print STDERR $@ ;
my $b ; chop $b ;
}
EXPECT
########
# Check scope of pragma with eval
use warnings;
{
no warnings ;
eval {
use warnings 'uninitialized' ;
my $b ; chop $b ;
}; print STDERR $@ ;
my $b ; chop $b ;
}
EXPECT
Use of uninitialized value $b in scalar chop at - line 8.
########
# Check scope of pragma with eval
no warnings;
{
use warnings 'uninitialized' ;
eval {
my $b ; chop $b ;
}; print STDERR $@ ;
my $b ; chop $b ;
}
EXPECT
Use of uninitialized value $b in scalar chop at - line 7.
Use of uninitialized value $b in scalar chop at - line 9.
########
# Check scope of pragma with eval
no warnings;
{
use warnings 'uninitialized' ;
eval {
no warnings ;
my $b ; chop $b ;
}; print STDERR $@ ;
my $b ; chop $b ;
}
EXPECT
Use of uninitialized value $b in scalar chop at - line 10.
########
# Check scope of pragma with eval
use warnings;
{
no warnings ;
eval {
my $a =+ 1 ;
}; print STDERR $@ ;
my $a =+ 1 ;
}
EXPECT
########
# Check scope of pragma with eval
use warnings;
{
no warnings ;
eval {
use warnings 'syntax' ;
my $a =+ 1 ;
}; print STDERR $@ ;
my $a =+ 1 ;
}
EXPECT
Reversed += operator at - line 8.
########
# Check scope of pragma with eval
no warnings;
{
use warnings 'syntax' ;
eval {
my $a =+ 1 ;
}; print STDERR $@ ;
my $a =+ 1 ;
}
EXPECT
Reversed += operator at - line 7.
Reversed += operator at - line 9.
########
# Check scope of pragma with eval
no warnings;
{
use warnings 'syntax' ;
eval {
no warnings ;
my $a =+ 1 ;
}; print STDERR $@ ;
my $a =+ 1 ;
}
EXPECT
Reversed += operator at - line 10.
########
# Check scope of pragma with eval
use warnings;
{
no warnings ;
eval '
my $b ; chop $b ;
'; print STDERR $@ ;
my $b ; chop $b ;
}
EXPECT
########
# Check scope of pragma with eval
use warnings;
{
no warnings ;
eval q[
use warnings 'uninitialized' ;
my $b ; chop $b ;
]; print STDERR $@;
my $b ; chop $b ;
}
EXPECT
Use of uninitialized value $b in scalar chop at (eval 1) line 3.
########
# Check scope of pragma with eval
no warnings;
{
use warnings 'uninitialized' ;
eval '
my $b ; chop $b ;
'; print STDERR $@ ;
my $b ; chop $b ;
}
EXPECT
Use of uninitialized value $b in scalar chop at (eval 1) line 2.
Use of uninitialized value $b in scalar chop at - line 9.
########
# Check scope of pragma with eval
no warnings;
{
use warnings 'uninitialized' ;
eval '
no warnings ;
my $b ; chop $b ;
'; print STDERR $@ ;
my $b ; chop $b ;
}
EXPECT
Use of uninitialized value $b in scalar chop at - line 10.
########
# Check scope of pragma with eval
use warnings;
{
no warnings ;
eval '
my $a =+ 1 ;
'; print STDERR $@ ;
my $a =+ 1 ;
}
EXPECT
########
# Check scope of pragma with eval
use warnings;
{
no warnings ;
eval q[
use warnings 'syntax' ;
my $a =+ 1 ;
]; print STDERR $@;
my $a =+ 1 ;
}
EXPECT
Reversed += operator at (eval 1) line 3.
########
# Check scope of pragma with eval
no warnings;
{
use warnings 'syntax' ;
eval '
my $a =+ 1 ;
'; print STDERR $@;
my $a =+ 1 ;
}
EXPECT
Reversed += operator at - line 9.
Reversed += operator at (eval 1) line 2.
########
# Check scope of pragma with eval
no warnings;
{
use warnings 'syntax' ;
eval '
no warnings ;
my $a =+ 1 ;
'; print STDERR $@;
my $a =+ 1 ;
}
EXPECT
Reversed += operator at - line 10.
########
# Check the additive nature of the pragma
my $a =+ 1 ;
my $a ; chop $a ;
use warnings 'syntax' ;
$a =+ 1 ;
my $b ; chop $b ;
use warnings 'uninitialized' ;
my $c ; chop $c ;
no warnings 'syntax' ;
$a =+ 1 ;
EXPECT
Reversed += operator at - line 6.
Use of uninitialized value $c in scalar chop at - line 9.
########
# Check that deprecation warnings are not implicitly disabled by use
$*;
use warnings "void";
$#;
EXPECT
$* is no longer supported. Its use will be fatal in Perl 5.30 at - line 3.
$# is no longer supported. Its use will be fatal in Perl 5.30 at - line 5.
Useless use of a variable in void context at - line 5.
########
# Check that deprecation warnings are not implicitly disabled by no
$*;
no warnings "void";
$#;
EXPECT
$* is no longer supported. Its use will be fatal in Perl 5.30 at - line 3.
$# is no longer supported. Its use will be fatal in Perl 5.30 at - line 5.