- sv.c AOK
+ sv.c
warn(warn_uninit);
Undefined value assigned to typeglob
+ Possible Y2K bug: %d format string following '19'
+
+ Reference is already weak [Perl_sv_rvweaken] <<TODO
+
+ Mandatory Warnings
+ ------------------
+ Malformed UTF-8 character [sv_pos_b2u] (not tested: difficult to produce
+ with perl now)
+
+ Mandatory Warnings TODO
+ ------------------
+ Attempt to free non-arena SV: 0x%lx [del_sv]
+ Reference miscount in sv_replace() [sv_replace]
+ Attempt to free unreferenced scalar [sv_free]
+ Attempt to free temp prematurely: SV 0x%lx [sv_free]
+ semi-panic: attempt to dup freed string [newSVsv]
+
__END__
# sv.c
use integer ;
-use warning 'uninitialized' ;
+use warnings 'uninitialized' ;
$x = 1 + $a[0] ; # a
+no warnings 'uninitialized' ;
+$x = 1 + $b[0] ; # a
EXPECT
-Use of uninitialized value at - line 4.
+Use of uninitialized value in integer addition (+) at - line 4.
########
# sv.c (sv_2iv)
package fred ;
package main ;
tie $A, 'fred' ;
use integer ;
-use warning 'uninitialized' ;
+use warnings 'uninitialized' ;
+$A *= 2 ;
+no warnings 'uninitialized' ;
$A *= 2 ;
EXPECT
-Use of uninitialized value at - line 10.
+Use of uninitialized value in integer multiplication (*) at - line 10.
########
# sv.c
use integer ;
-use warning 'uninitialized' ;
+use warnings 'uninitialized' ;
my $x *= 2 ; #b
+no warnings 'uninitialized' ;
+my $y *= 2 ; #b
EXPECT
-Use of uninitialized value at - line 4.
+Use of uninitialized value in integer multiplication (*) at - line 4.
########
# sv.c (sv_2uv)
package fred ;
sub STORE { return 1 }
package main ;
tie $A, 'fred' ;
-use warning 'uninitialized' ;
+use warnings 'uninitialized' ;
+$B = 0 ;
+$B |= $A ;
+no warnings 'uninitialized' ;
$B = 0 ;
$B |= $A ;
EXPECT
-Use of uninitialized value at - line 10.
+Use of uninitialized value in bitwise or (|) at - line 10.
########
# sv.c
-use warning 'uninitialized' ;
+use warnings 'uninitialized' ;
my $Y = 1 ;
-my $x = 1 | $a[$Y]
+my $x = 1 | $a[$Y] ;
+no warnings 'uninitialized' ;
+my $Y = 1 ;
+$x = 1 | $b[$Y] ;
EXPECT
-Use of uninitialized value at - line 4.
+Use of uninitialized value in bitwise or (|) at - line 4.
########
# sv.c
-use warning 'uninitialized' ;
+use warnings 'uninitialized' ;
my $x *= 1 ; # d
+no warnings 'uninitialized' ;
+my $y *= 1 ; # d
EXPECT
-Use of uninitialized value at - line 3.
+Use of uninitialized value in multiplication (*) at - line 3.
########
# sv.c
-use warning 'uninitialized' ;
+use warnings 'uninitialized' ;
$x = 1 + $a[0] ; # e
+no warnings 'uninitialized' ;
+$x = 1 + $b[0] ; # e
EXPECT
-Use of uninitialized value at - line 3.
+Use of uninitialized value in addition (+) at - line 3.
########
# sv.c (sv_2nv)
package fred ;
sub STORE { return 1 }
package main ;
tie $A, 'fred' ;
-use warning 'uninitialized' ;
+use warnings 'uninitialized' ;
+$A *= 2 ;
+no warnings 'uninitialized' ;
$A *= 2 ;
EXPECT
-Use of uninitialized value at - line 9.
+Use of uninitialized value in multiplication (*) at - line 9.
########
# sv.c
-use warning 'uninitialized' ;
+use warnings 'uninitialized' ;
$x = $y + 1 ; # f
+no warnings 'uninitialized' ;
+$x = $z + 1 ; # f
EXPECT
-Use of uninitialized value at - line 3.
+Use of uninitialized value in addition (+) at - line 3.
########
# sv.c
-use warning 'uninitialized' ;
+use warnings 'uninitialized' ;
+$x = chop undef ; # g
+no warnings 'uninitialized' ;
$x = chop undef ; # g
EXPECT
-Use of uninitialized value at - line 3.
+Modification of a read-only value attempted at - line 3.
########
# sv.c
-use warning 'uninitialized' ;
+use warnings 'uninitialized' ;
$x = chop $y ; # h
+no warnings 'uninitialized' ;
+$x = chop $z ; # h
EXPECT
-Use of uninitialized value at - line 3.
+Use of uninitialized value in scalar chop at - line 3.
########
# sv.c (sv_2pv)
package fred ;
sub STORE { return 1 }
package main ;
tie $A, 'fred' ;
-use warning 'uninitialized' ;
+use warnings 'uninitialized' ;
$B = "" ;
$B .= $A ;
+no warnings 'uninitialized' ;
+$C = "" ;
+$C .= $A ;
EXPECT
-Use of uninitialized value at - line 10.
+Use of uninitialized value in concatenation (.) or string at - line 10.
########
# sv.c
-use warning 'numeric' ;
+use warnings 'numeric' ;
sub TIESCALAR{bless[]} ;
sub FETCH {"def"} ;
tie $a,"main" ;
-my $b = 1 + $a
+my $b = 1 + $a;
+no warnings 'numeric' ;
+my $c = 1 + $a;
EXPECT
-Argument "def" isn't numeric in add at - line 6.
+Argument "def" isn't numeric in addition (+) at - line 6.
########
# sv.c
-use warning 'numeric' ;
+use warnings 'numeric' ;
my $x = 1 + "def" ;
+no warnings 'numeric' ;
+my $z = 1 + "def" ;
EXPECT
-Argument "def" isn't numeric in add at - line 3.
+Argument "def" isn't numeric in addition (+) at - line 3.
########
# sv.c
-use warning 'numeric' ;
+use warnings 'numeric' ;
my $a = "def" ;
my $x = 1 + $a ;
+no warnings 'numeric' ;
+my $y = 1 + $a ;
EXPECT
-Argument "def" isn't numeric in add at - line 4.
+Argument "def" isn't numeric in addition (+) at - line 4.
########
# sv.c
-use warning 'numeric' ; use integer ;
+use warnings 'numeric' ; use integer ;
my $a = "def" ;
my $x = 1 + $a ;
+no warnings 'numeric' ;
+my $z = 1 + $a ;
EXPECT
-Argument "def" isn't numeric in i_add at - line 4.
+Argument "def" isn't numeric in integer addition (+) at - line 4.
########
# sv.c
-use warning 'numeric' ;
+use warnings 'numeric' ;
my $x = 1 & "def" ;
+no warnings 'numeric' ;
+my $z = 1 & "def" ;
EXPECT
-Argument "def" isn't numeric in bit_and at - line 3.
+Argument "def" isn't numeric in bitwise and (&) at - line 3.
########
# sv.c
-use warning 'redefine' ;
+use warnings 'redefine' ;
sub fred {}
sub joe {}
*fred = \&joe ;
+no warnings 'redefine' ;
+sub jim {}
+*jim = \&joe ;
EXPECT
Subroutine fred redefined at - line 5.
########
# sv.c
-use warning 'printf' ;
-open F, ">/dev/null" ;
-printf F "%q\n" ;
-my $a = sprintf "%q" ;
+use warnings 'printf' ;
+open F, ">".($^O eq 'VMS'? 'NL:' : '/dev/null') ;
+printf F "%z\n" ;
+my $a = sprintf "%z" ;
+printf F "%" ;
+$a = sprintf "%" ;
+printf F "%\x02" ;
+$a = sprintf "%\x02" ;
+no warnings 'printf' ;
+printf F "%z\n" ;
+$a = sprintf "%z" ;
printf F "%" ;
$a = sprintf "%" ;
printf F "%\x02" ;
$a = sprintf "%\x02" ;
EXPECT
-Invalid conversion in sprintf: "%q" at - line 5.
+Invalid conversion in sprintf: "%z" at - line 5.
Invalid conversion in sprintf: end of string at - line 7.
Invalid conversion in sprintf: "%\002" at - line 9.
-Invalid conversion in printf: "%q" at - line 4.
+Invalid conversion in printf: "%z" at - line 4.
Invalid conversion in printf: end of string at - line 6.
Invalid conversion in printf: "%\002" at - line 8.
########
# sv.c
-use warning 'unsafe' ;
+use warnings 'misc' ;
*a = undef ;
+no warnings 'misc' ;
+*b = undef ;
EXPECT
Undefined value assigned to typeglob at - line 3.
+########
+# sv.c
+use warnings 'y2k';
+use Config;
+BEGIN {
+ unless ($Config{ccflags} =~ /Y2KWARN/) {
+ print "SKIPPED\n# perl not built with -DPERL_Y2KWARN";
+ exit 0;
+ }
+ $|=1;
+}
+my $x;
+my $yy = 78;
+$x = printf "19%02d\n", $yy;
+$x = sprintf "#19%02d\n", $yy;
+$x = printf " 19%02d\n", 78;
+$x = sprintf "19%02d\n", 78;
+$x = printf "319%02d\n", $yy;
+$x = sprintf "319%02d\n", $yy;
+no warnings 'y2k';
+$x = printf "19%02d\n", $yy;
+$x = sprintf "19%02d\n", $yy;
+$x = printf "19%02d\n", 78;
+$x = sprintf "19%02d\n", 78;
+EXPECT
+Possible Y2K bug: %d format string following '19' at - line 16.
+Possible Y2K bug: %d format string following '19' at - line 13.
+1978
+Possible Y2K bug: %d format string following '19' at - line 14.
+Possible Y2K bug: %d format string following '19' at - line 15.
+ 1978
+31978
+1978
+1978