584 lines
12 KiB
Plaintext
584 lines
12 KiB
Plaintext
toke.c AOK
|
|
|
|
we seem to have lost a few ambiguous warnings!!
|
|
|
|
|
|
1 if $a EQ $b ;
|
|
1 if $a NE $b ;
|
|
1 if $a LT $b ;
|
|
1 if $a GT $b ;
|
|
1 if $a GE $b ;
|
|
1 if $a LE $b ;
|
|
$a = <<;
|
|
Use of comma-less variable list is deprecated
|
|
(called 3 times via depcom)
|
|
|
|
\1 better written as $1
|
|
use warnings 'syntax' ;
|
|
s/(abc)/\1/;
|
|
|
|
warn(warn_nosemi)
|
|
Semicolon seems to be missing
|
|
$a = 1
|
|
&time ;
|
|
|
|
|
|
Reversed %c= operator
|
|
my $a =+ 2 ;
|
|
$a =- 2 ;
|
|
$a =* 2 ;
|
|
$a =% 2 ;
|
|
$a =& 2 ;
|
|
$a =. 2 ;
|
|
$a =^ 2 ;
|
|
$a =| 2 ;
|
|
$a =< 2 ;
|
|
$a =/ 2 ;
|
|
|
|
Multidimensional syntax %.*s not supported
|
|
my $a = $a[1,2] ;
|
|
|
|
You need to quote \"%s\""
|
|
sub fred {} ; $SIG{TERM} = fred;
|
|
|
|
Scalar value %.*s better written as $%.*s"
|
|
@a[3] = 2;
|
|
@a{3} = 2;
|
|
|
|
Can't use \\%c to mean $%c in expression
|
|
$_ = "ab" ; s/(ab)/\1/e;
|
|
|
|
Unquoted string "abc" may clash with future reserved word at - line 3.
|
|
warn(warn_reserved
|
|
$a = abc;
|
|
|
|
chmod() mode argument is missing initial 0
|
|
chmod 3;
|
|
|
|
Possible attempt to separate words with commas
|
|
@a = qw(a, b, c) ;
|
|
|
|
Possible attempt to put comments in qw() list
|
|
@a = qw(a b # c) ;
|
|
|
|
umask: argument is missing initial 0
|
|
umask 3;
|
|
|
|
%s (...) interpreted as function
|
|
print ("")
|
|
printf ("")
|
|
sort ("")
|
|
|
|
Ambiguous use of %c{%s%s} resolved to %c%s%s
|
|
$a = ${time[2]}
|
|
$a = ${time{2}}
|
|
|
|
|
|
Ambiguous use of %c{%s} resolved to %c%s
|
|
$a = ${time}
|
|
sub fred {} $a = ${fred}
|
|
|
|
Misplaced _ in number
|
|
$a = 1_2;
|
|
$a = 1_2345_6;
|
|
|
|
Bareword \"%s\" refers to nonexistent package
|
|
$a = FRED:: ;
|
|
|
|
Ambiguous call resolved as CORE::%s(), qualify as such or use &
|
|
sub time {}
|
|
my $a = time()
|
|
|
|
Unrecognized escape \\%c passed through
|
|
$a = "\m" ;
|
|
|
|
%s number > %s non-portable
|
|
my $a = 0b011111111111111111111111111111110 ;
|
|
$a = 0b011111111111111111111111111111111 ;
|
|
$a = 0b111111111111111111111111111111111 ;
|
|
$a = 0x0fffffffe ;
|
|
$a = 0x0ffffffff ;
|
|
$a = 0x1ffffffff ;
|
|
$a = 0037777777776 ;
|
|
$a = 0037777777777 ;
|
|
$a = 0047777777777 ;
|
|
|
|
Integer overflow in binary number
|
|
my $a = 0b011111111111111111111111111111110 ;
|
|
$a = 0b011111111111111111111111111111111 ;
|
|
$a = 0b111111111111111111111111111111111 ;
|
|
$a = 0x0fffffffe ;
|
|
$a = 0x0ffffffff ;
|
|
$a = 0x1ffffffff ;
|
|
$a = 0037777777776 ;
|
|
$a = 0037777777777 ;
|
|
$a = 0047777777777 ;
|
|
|
|
Mandatory Warnings
|
|
------------------
|
|
Use of "%s" without parentheses is ambiguous [check_uni]
|
|
rand + 4
|
|
|
|
Ambiguous use of -%s resolved as -&%s() [yylex]
|
|
sub fred {} ; - fred ;
|
|
|
|
Precedence problem: open %.*s should be open(%.*s) [yylex]
|
|
open FOO || die;
|
|
|
|
Operator or semicolon missing before %c%s [yylex]
|
|
Ambiguous use of %c resolved as operator %c
|
|
*foo *foo
|
|
|
|
__END__
|
|
# toke.c
|
|
use warnings 'deprecated' ;
|
|
1 if $a EQ $b ;
|
|
1 if $a NE $b ;
|
|
1 if $a GT $b ;
|
|
1 if $a LT $b ;
|
|
1 if $a GE $b ;
|
|
1 if $a LE $b ;
|
|
no warnings 'deprecated' ;
|
|
1 if $a EQ $b ;
|
|
1 if $a NE $b ;
|
|
1 if $a GT $b ;
|
|
1 if $a LT $b ;
|
|
1 if $a GE $b ;
|
|
1 if $a LE $b ;
|
|
EXPECT
|
|
Use of EQ is deprecated at - line 3.
|
|
Use of NE is deprecated at - line 4.
|
|
Use of GT is deprecated at - line 5.
|
|
Use of LT is deprecated at - line 6.
|
|
Use of GE is deprecated at - line 7.
|
|
Use of LE is deprecated at - line 8.
|
|
########
|
|
# toke.c
|
|
use warnings 'deprecated' ;
|
|
format STDOUT =
|
|
@<<< @||| @>>> @>>>
|
|
$a $b "abc" 'def'
|
|
.
|
|
no warnings 'deprecated' ;
|
|
format STDOUT =
|
|
@<<< @||| @>>> @>>>
|
|
$a $b "abc" 'def'
|
|
.
|
|
EXPECT
|
|
Use of comma-less variable list is deprecated at - line 5.
|
|
Use of comma-less variable list is deprecated at - line 5.
|
|
Use of comma-less variable list is deprecated at - line 5.
|
|
########
|
|
# toke.c
|
|
use warnings 'deprecated' ;
|
|
$a = <<;
|
|
|
|
no warnings 'deprecated' ;
|
|
$a = <<;
|
|
|
|
EXPECT
|
|
Use of bare << to mean <<"" is deprecated at - line 3.
|
|
########
|
|
# toke.c
|
|
use warnings 'syntax' ;
|
|
s/(abc)/\1/;
|
|
no warnings 'syntax' ;
|
|
s/(abc)/\1/;
|
|
EXPECT
|
|
\1 better written as $1 at - line 3.
|
|
########
|
|
# toke.c
|
|
use warnings 'semicolon' ;
|
|
$a = 1
|
|
&time ;
|
|
no warnings 'semicolon' ;
|
|
$a = 1
|
|
&time ;
|
|
EXPECT
|
|
Semicolon seems to be missing at - line 3.
|
|
########
|
|
# toke.c
|
|
BEGIN {
|
|
# Scalars leaked: due to syntax errors
|
|
$ENV{PERL_DESTRUCT_LEVEL} = 0 unless $ENV{PERL_DESTRUCT_LEVEL} > 3;
|
|
}
|
|
use warnings 'syntax' ;
|
|
my $a =+ 2 ;
|
|
$a =- 2 ;
|
|
$a =* 2 ;
|
|
$a =% 2 ;
|
|
$a =& 2 ;
|
|
$a =. 2 ;
|
|
$a =^ 2 ;
|
|
$a =| 2 ;
|
|
$a =< 2 ;
|
|
$a =/ 2 ;
|
|
EXPECT
|
|
Reversed += operator at - line 7.
|
|
Reversed -= operator at - line 8.
|
|
Reversed *= operator at - line 9.
|
|
Reversed %= operator at - line 10.
|
|
Reversed &= operator at - line 11.
|
|
Reversed .= operator at - line 12.
|
|
syntax error at - line 12, near "=."
|
|
Reversed ^= operator at - line 13.
|
|
syntax error at - line 13, near "=^"
|
|
Reversed |= operator at - line 14.
|
|
syntax error at - line 14, near "=|"
|
|
Reversed <= operator at - line 15.
|
|
Unterminated <> operator at - line 15.
|
|
########
|
|
# toke.c
|
|
BEGIN {
|
|
# Scalars leaked: due to syntax errors
|
|
$ENV{PERL_DESTRUCT_LEVEL} = 0 unless $ENV{PERL_DESTRUCT_LEVEL} > 3;
|
|
}
|
|
no warnings 'syntax' ;
|
|
my $a =+ 2 ;
|
|
$a =- 2 ;
|
|
$a =* 2 ;
|
|
$a =% 2 ;
|
|
$a =& 2 ;
|
|
$a =. 2 ;
|
|
$a =^ 2 ;
|
|
$a =| 2 ;
|
|
$a =< 2 ;
|
|
$a =/ 2 ;
|
|
EXPECT
|
|
syntax error at - line 12, near "=."
|
|
syntax error at - line 13, near "=^"
|
|
syntax error at - line 14, near "=|"
|
|
Unterminated <> operator at - line 15.
|
|
########
|
|
# toke.c
|
|
use warnings 'syntax' ;
|
|
my $a = $a[1,2] ;
|
|
no warnings 'syntax' ;
|
|
my $a = $a[1,2] ;
|
|
EXPECT
|
|
Multidimensional syntax $a[1,2] not supported at - line 3.
|
|
########
|
|
# toke.c
|
|
use warnings 'syntax' ;
|
|
sub fred {} ; $SIG{TERM} = fred;
|
|
no warnings 'syntax' ;
|
|
$SIG{TERM} = fred;
|
|
EXPECT
|
|
You need to quote "fred" at - line 3.
|
|
########
|
|
# toke.c
|
|
use warnings 'syntax' ;
|
|
@a[3] = 2;
|
|
@a{3} = 2;
|
|
no warnings 'syntax' ;
|
|
@a[3] = 2;
|
|
@a{3} = 2;
|
|
EXPECT
|
|
Scalar value @a[3] better written as $a[3] at - line 3.
|
|
Scalar value @a{3} better written as $a{3} at - line 4.
|
|
########
|
|
# toke.c
|
|
use warnings 'syntax' ;
|
|
$_ = "ab" ;
|
|
s/(ab)/\1/e;
|
|
no warnings 'syntax' ;
|
|
$_ = "ab" ;
|
|
s/(ab)/\1/e;
|
|
EXPECT
|
|
Can't use \1 to mean $1 in expression at - line 4.
|
|
########
|
|
# toke.c
|
|
use warnings 'reserved' ;
|
|
$a = abc;
|
|
no warnings 'reserved' ;
|
|
$a = abc;
|
|
EXPECT
|
|
Unquoted string "abc" may clash with future reserved word at - line 3.
|
|
########
|
|
# toke.c
|
|
use warnings 'chmod' ;
|
|
chmod 3;
|
|
no warnings 'chmod' ;
|
|
chmod 3;
|
|
EXPECT
|
|
chmod() mode argument is missing initial 0 at - line 3.
|
|
########
|
|
# toke.c
|
|
use warnings 'qw' ;
|
|
@a = qw(a, b, c) ;
|
|
no warnings 'qw' ;
|
|
@a = qw(a, b, c) ;
|
|
EXPECT
|
|
Possible attempt to separate words with commas at - line 3.
|
|
########
|
|
# toke.c
|
|
use warnings 'qw' ;
|
|
@a = qw(a b #) ;
|
|
no warnings 'qw' ;
|
|
@a = qw(a b #) ;
|
|
EXPECT
|
|
Possible attempt to put comments in qw() list at - line 3.
|
|
########
|
|
# toke.c
|
|
use warnings 'umask' ;
|
|
umask 3;
|
|
no warnings 'umask' ;
|
|
umask 3;
|
|
EXPECT
|
|
umask: argument is missing initial 0 at - line 3.
|
|
########
|
|
# toke.c
|
|
use warnings 'syntax' ;
|
|
print ("")
|
|
EXPECT
|
|
print (...) interpreted as function at - line 3.
|
|
########
|
|
# toke.c
|
|
no warnings 'syntax' ;
|
|
print ("")
|
|
EXPECT
|
|
|
|
########
|
|
# toke.c
|
|
use warnings 'syntax' ;
|
|
printf ("")
|
|
EXPECT
|
|
printf (...) interpreted as function at - line 3.
|
|
########
|
|
# toke.c
|
|
no warnings 'syntax' ;
|
|
printf ("")
|
|
EXPECT
|
|
|
|
########
|
|
# toke.c
|
|
use warnings 'syntax' ;
|
|
sort ("")
|
|
EXPECT
|
|
sort (...) interpreted as function at - line 3.
|
|
########
|
|
# toke.c
|
|
no warnings 'syntax' ;
|
|
sort ("")
|
|
EXPECT
|
|
|
|
########
|
|
# toke.c
|
|
use warnings 'ambiguous' ;
|
|
$a = ${time[2]};
|
|
no warnings 'ambiguous' ;
|
|
$a = ${time[2]};
|
|
EXPECT
|
|
Ambiguous use of ${time[...]} resolved to $time[...] at - line 3.
|
|
########
|
|
# toke.c
|
|
use warnings 'ambiguous' ;
|
|
$a = ${time{2}};
|
|
EXPECT
|
|
Ambiguous use of ${time{...}} resolved to $time{...} at - line 3.
|
|
########
|
|
# toke.c
|
|
no warnings 'ambiguous' ;
|
|
$a = ${time{2}};
|
|
EXPECT
|
|
|
|
########
|
|
# toke.c
|
|
use warnings 'ambiguous' ;
|
|
$a = ${time} ;
|
|
no warnings 'ambiguous' ;
|
|
$a = ${time} ;
|
|
EXPECT
|
|
Ambiguous use of ${time} resolved to $time at - line 3.
|
|
########
|
|
# toke.c
|
|
use warnings 'ambiguous' ;
|
|
sub fred {}
|
|
$a = ${fred} ;
|
|
no warnings 'ambiguous' ;
|
|
$a = ${fred} ;
|
|
EXPECT
|
|
Ambiguous use of ${fred} resolved to $fred at - line 4.
|
|
########
|
|
# toke.c
|
|
use warnings 'syntax' ;
|
|
$a = 1_2;
|
|
$a = 1_2345_6;
|
|
no warnings 'syntax' ;
|
|
$a = 1_2;
|
|
$a = 1_2345_6;
|
|
EXPECT
|
|
Misplaced _ in number at - line 3.
|
|
Misplaced _ in number at - line 4.
|
|
Misplaced _ in number at - line 4.
|
|
########
|
|
# toke.c
|
|
use warnings 'bareword' ;
|
|
#line 25 "bar"
|
|
$a = FRED:: ;
|
|
no warnings 'bareword' ;
|
|
#line 25 "bar"
|
|
$a = FRED:: ;
|
|
EXPECT
|
|
Bareword "FRED::" refers to nonexistent package at bar line 25.
|
|
########
|
|
# toke.c
|
|
use warnings 'ambiguous' ;
|
|
sub time {}
|
|
my $a = time() ;
|
|
no warnings 'ambiguous' ;
|
|
my $b = time() ;
|
|
EXPECT
|
|
Ambiguous call resolved as CORE::time(), qualify as such or use & at - line 4.
|
|
########
|
|
# toke.c
|
|
use warnings ;
|
|
eval <<'EOE';
|
|
{
|
|
#line 30 "foo"
|
|
$_ = " \x{123} " ;
|
|
}
|
|
EOE
|
|
EXPECT
|
|
|
|
########
|
|
# toke.c
|
|
my $a = rand + 4 ;
|
|
EXPECT
|
|
Warning: Use of "rand" without parens is ambiguous at - line 2.
|
|
########
|
|
# toke.c
|
|
$^W = 0 ;
|
|
my $a = rand + 4 ;
|
|
{
|
|
no warnings 'ambiguous' ;
|
|
$a = rand + 4 ;
|
|
use warnings 'ambiguous' ;
|
|
$a = rand + 4 ;
|
|
}
|
|
$a = rand + 4 ;
|
|
EXPECT
|
|
Warning: Use of "rand" without parens is ambiguous at - line 3.
|
|
Warning: Use of "rand" without parens is ambiguous at - line 8.
|
|
Warning: Use of "rand" without parens is ambiguous at - line 10.
|
|
########
|
|
# toke.c
|
|
sub fred {};
|
|
-fred ;
|
|
EXPECT
|
|
Ambiguous use of -fred resolved as -&fred() at - line 3.
|
|
########
|
|
# toke.c
|
|
$^W = 0 ;
|
|
sub fred {} ;
|
|
-fred ;
|
|
{
|
|
no warnings 'ambiguous' ;
|
|
-fred ;
|
|
use warnings 'ambiguous' ;
|
|
-fred ;
|
|
}
|
|
-fred ;
|
|
EXPECT
|
|
Ambiguous use of -fred resolved as -&fred() at - line 4.
|
|
Ambiguous use of -fred resolved as -&fred() at - line 9.
|
|
Ambiguous use of -fred resolved as -&fred() at - line 11.
|
|
########
|
|
# toke.c
|
|
open FOO || time;
|
|
EXPECT
|
|
Precedence problem: open FOO should be open(FOO) at - line 2.
|
|
########
|
|
# toke.c
|
|
$^W = 0 ;
|
|
open FOO || time;
|
|
{
|
|
no warnings 'precedence' ;
|
|
open FOO || time;
|
|
use warnings 'precedence' ;
|
|
open FOO || time;
|
|
}
|
|
open FOO || time;
|
|
EXPECT
|
|
Precedence problem: open FOO should be open(FOO) at - line 3.
|
|
Precedence problem: open FOO should be open(FOO) at - line 8.
|
|
Precedence problem: open FOO should be open(FOO) at - line 10.
|
|
########
|
|
# toke.c
|
|
$^W = 0 ;
|
|
*foo *foo ;
|
|
{
|
|
no warnings 'ambiguous' ;
|
|
*foo *foo ;
|
|
use warnings 'ambiguous' ;
|
|
*foo *foo ;
|
|
}
|
|
*foo *foo ;
|
|
EXPECT
|
|
Operator or semicolon missing before *foo at - line 3.
|
|
Ambiguous use of * resolved as operator * at - line 3.
|
|
Operator or semicolon missing before *foo at - line 8.
|
|
Ambiguous use of * resolved as operator * at - line 8.
|
|
Operator or semicolon missing before *foo at - line 10.
|
|
Ambiguous use of * resolved as operator * at - line 10.
|
|
########
|
|
# toke.c
|
|
use warnings 'misc' ;
|
|
my $a = "\m" ;
|
|
no warnings 'misc' ;
|
|
$a = "\m" ;
|
|
EXPECT
|
|
Unrecognized escape \m passed through at - line 3.
|
|
########
|
|
# toke.c
|
|
use warnings 'portable' ;
|
|
my $a = 0b011111111111111111111111111111110 ;
|
|
$a = 0b011111111111111111111111111111111 ;
|
|
$a = 0b111111111111111111111111111111111 ;
|
|
$a = 0x0fffffffe ;
|
|
$a = 0x0ffffffff ;
|
|
$a = 0x1ffffffff ;
|
|
$a = 0037777777776 ;
|
|
$a = 0037777777777 ;
|
|
$a = 0047777777777 ;
|
|
no warnings 'portable' ;
|
|
$a = 0b011111111111111111111111111111110 ;
|
|
$a = 0b011111111111111111111111111111111 ;
|
|
$a = 0b111111111111111111111111111111111 ;
|
|
$a = 0x0fffffffe ;
|
|
$a = 0x0ffffffff ;
|
|
$a = 0x1ffffffff ;
|
|
$a = 0037777777776 ;
|
|
$a = 0037777777777 ;
|
|
$a = 0047777777777 ;
|
|
EXPECT
|
|
Binary number > 0b11111111111111111111111111111111 non-portable at - line 5.
|
|
Hexadecimal number > 0xffffffff non-portable at - line 8.
|
|
Octal number > 037777777777 non-portable at - line 11.
|
|
########
|
|
# toke.c
|
|
use warnings 'overflow' ;
|
|
my $a = 0b011111111111111111111111111111110 ;
|
|
$a = 0b011111111111111111111111111111111 ;
|
|
$a = 0b10000000000000000000000000000000000000000000000000000000000000000 ;
|
|
$a = 0x0fffffffe ;
|
|
$a = 0x0ffffffff ;
|
|
$a = 0x10000000000000000 ;
|
|
$a = 0037777777776 ;
|
|
$a = 0037777777777 ;
|
|
$a = 002000000000000000000000;
|
|
no warnings 'overflow' ;
|
|
$a = 0b011111111111111111111111111111110 ;
|
|
$a = 0b011111111111111111111111111111111 ;
|
|
$a = 0b10000000000000000000000000000000000000000000000000000000000000000 ;
|
|
$a = 0x0fffffffe ;
|
|
$a = 0x0ffffffff ;
|
|
$a = 0x10000000000000000 ;
|
|
$a = 0037777777776 ;
|
|
$a = 0037777777777 ;
|
|
$a = 002000000000000000000000;
|
|
EXPECT
|
|
Integer overflow in binary number at - line 5.
|
|
Integer overflow in hexadecimal number at - line 8.
|
|
Integer overflow in octal number at - line 11.
|