| 1 | sv.c
|
|---|
| 2 |
|
|---|
| 3 | warn(warn_uninit);
|
|---|
| 4 |
|
|---|
| 5 | warn(warn_uninit);
|
|---|
| 6 |
|
|---|
| 7 | warn(warn_uninit);
|
|---|
| 8 |
|
|---|
| 9 | warn(warn_uninit);
|
|---|
| 10 |
|
|---|
| 11 | not_a_number(sv);
|
|---|
| 12 |
|
|---|
| 13 | not_a_number(sv);
|
|---|
| 14 |
|
|---|
| 15 | warn(warn_uninit);
|
|---|
| 16 |
|
|---|
| 17 | not_a_number(sv);
|
|---|
| 18 |
|
|---|
| 19 | warn(warn_uninit);
|
|---|
| 20 |
|
|---|
| 21 | not_a_number(sv);
|
|---|
| 22 |
|
|---|
| 23 | not_a_number(sv);
|
|---|
| 24 |
|
|---|
| 25 | warn(warn_uninit);
|
|---|
| 26 |
|
|---|
| 27 | warn(warn_uninit);
|
|---|
| 28 |
|
|---|
| 29 | Subroutine %s redefined
|
|---|
| 30 |
|
|---|
| 31 | Invalid conversion in %s:
|
|---|
| 32 |
|
|---|
| 33 | Undefined value assigned to typeglob
|
|---|
| 34 |
|
|---|
| 35 | Possible Y2K bug: %d format string following '19'
|
|---|
| 36 |
|
|---|
| 37 | Reference is already weak [Perl_sv_rvweaken] <<TODO
|
|---|
| 38 |
|
|---|
| 39 | Mandatory Warnings
|
|---|
| 40 | ------------------
|
|---|
| 41 | Malformed UTF-8 character [sv_pos_b2u] (not tested: difficult to produce
|
|---|
| 42 | with perl now)
|
|---|
| 43 |
|
|---|
| 44 | Mandatory Warnings TODO
|
|---|
| 45 | ------------------
|
|---|
| 46 | Attempt to free non-arena SV: 0x%lx [del_sv]
|
|---|
| 47 | Reference miscount in sv_replace() [sv_replace]
|
|---|
| 48 | Attempt to free unreferenced scalar [sv_free]
|
|---|
| 49 | Attempt to free temp prematurely: SV 0x%lx [sv_free]
|
|---|
| 50 | semi-panic: attempt to dup freed string [newSVsv]
|
|---|
| 51 |
|
|---|
| 52 |
|
|---|
| 53 | __END__
|
|---|
| 54 | # sv.c
|
|---|
| 55 | use integer ;
|
|---|
| 56 | use warnings 'uninitialized' ;
|
|---|
| 57 | $x = 1 + $a[0] ; # a
|
|---|
| 58 | no warnings 'uninitialized' ;
|
|---|
| 59 | $x = 1 + $b[0] ; # a
|
|---|
| 60 | EXPECT
|
|---|
| 61 | Use of uninitialized value in integer addition (+) at - line 4.
|
|---|
| 62 | ########
|
|---|
| 63 | # sv.c (sv_2iv)
|
|---|
| 64 | package fred ;
|
|---|
| 65 | sub TIESCALAR { my $x ; bless \$x}
|
|---|
| 66 | sub FETCH { return undef }
|
|---|
| 67 | sub STORE { return 1 }
|
|---|
| 68 | package main ;
|
|---|
| 69 | tie $A, 'fred' ;
|
|---|
| 70 | use integer ;
|
|---|
| 71 | use warnings 'uninitialized' ;
|
|---|
| 72 | $A *= 2 ;
|
|---|
| 73 | no warnings 'uninitialized' ;
|
|---|
| 74 | $A *= 2 ;
|
|---|
| 75 | EXPECT
|
|---|
| 76 | Use of uninitialized value in integer multiplication (*) at - line 10.
|
|---|
| 77 | ########
|
|---|
| 78 | # sv.c
|
|---|
| 79 | use integer ;
|
|---|
| 80 | use warnings 'uninitialized' ;
|
|---|
| 81 | my $x *= 2 ; #b
|
|---|
| 82 | no warnings 'uninitialized' ;
|
|---|
| 83 | my $y *= 2 ; #b
|
|---|
| 84 | EXPECT
|
|---|
| 85 | Use of uninitialized value in integer multiplication (*) at - line 4.
|
|---|
| 86 | ########
|
|---|
| 87 | # sv.c (sv_2uv)
|
|---|
| 88 | package fred ;
|
|---|
| 89 | sub TIESCALAR { my $x ; bless \$x}
|
|---|
| 90 | sub FETCH { return undef }
|
|---|
| 91 | sub STORE { return 1 }
|
|---|
| 92 | package main ;
|
|---|
| 93 | tie $A, 'fred' ;
|
|---|
| 94 | use warnings 'uninitialized' ;
|
|---|
| 95 | $B = 0 ;
|
|---|
| 96 | $B |= $A ;
|
|---|
| 97 | no warnings 'uninitialized' ;
|
|---|
| 98 | $B = 0 ;
|
|---|
| 99 | $B |= $A ;
|
|---|
| 100 | EXPECT
|
|---|
| 101 | Use of uninitialized value in bitwise or (|) at - line 10.
|
|---|
| 102 | ########
|
|---|
| 103 | # sv.c
|
|---|
| 104 | use warnings 'uninitialized' ;
|
|---|
| 105 | my $Y = 1 ;
|
|---|
| 106 | my $x = 1 | $a[$Y] ;
|
|---|
| 107 | no warnings 'uninitialized' ;
|
|---|
| 108 | my $Y = 1 ;
|
|---|
| 109 | $x = 1 | $b[$Y] ;
|
|---|
| 110 | EXPECT
|
|---|
| 111 | Use of uninitialized value in bitwise or (|) at - line 4.
|
|---|
| 112 | ########
|
|---|
| 113 | # sv.c
|
|---|
| 114 | use warnings 'uninitialized' ;
|
|---|
| 115 | my $Y = 1 ;
|
|---|
| 116 | my $x = 1 & $a[$Y] ;
|
|---|
| 117 | no warnings 'uninitialized' ;
|
|---|
| 118 | my $Y = 1 ;
|
|---|
| 119 | $x = 1 & $b[$Y] ;
|
|---|
| 120 | EXPECT
|
|---|
| 121 | Use of uninitialized value in bitwise and (&) at - line 4.
|
|---|
| 122 | ########
|
|---|
| 123 | # sv.c
|
|---|
| 124 | use warnings 'uninitialized' ;
|
|---|
| 125 | my $Y = 1 ;
|
|---|
| 126 | my $x = ~$a[$Y] ;
|
|---|
| 127 | no warnings 'uninitialized' ;
|
|---|
| 128 | my $Y = 1 ;
|
|---|
| 129 | $x = ~$b[$Y] ;
|
|---|
| 130 | EXPECT
|
|---|
| 131 | Use of uninitialized value in 1's complement (~) at - line 4.
|
|---|
| 132 | ########
|
|---|
| 133 | # sv.c
|
|---|
| 134 | use warnings 'uninitialized' ;
|
|---|
| 135 | my $x *= 1 ; # d
|
|---|
| 136 | no warnings 'uninitialized' ;
|
|---|
| 137 | my $y *= 1 ; # d
|
|---|
| 138 | EXPECT
|
|---|
| 139 | Use of uninitialized value in multiplication (*) at - line 3.
|
|---|
| 140 | ########
|
|---|
| 141 | # sv.c
|
|---|
| 142 | use warnings 'uninitialized' ;
|
|---|
| 143 | $x = 1 + $a[0] ; # e
|
|---|
| 144 | no warnings 'uninitialized' ;
|
|---|
| 145 | $x = 1 + $b[0] ; # e
|
|---|
| 146 | EXPECT
|
|---|
| 147 | Use of uninitialized value in addition (+) at - line 3.
|
|---|
| 148 | ########
|
|---|
| 149 | # sv.c (sv_2nv)
|
|---|
| 150 | package fred ;
|
|---|
| 151 | sub TIESCALAR { my $x ; bless \$x}
|
|---|
| 152 | sub FETCH { return undef }
|
|---|
| 153 | sub STORE { return 1 }
|
|---|
| 154 | package main ;
|
|---|
| 155 | tie $A, 'fred' ;
|
|---|
| 156 | use warnings 'uninitialized' ;
|
|---|
| 157 | $A *= 2 ;
|
|---|
| 158 | no warnings 'uninitialized' ;
|
|---|
| 159 | $A *= 2 ;
|
|---|
| 160 | EXPECT
|
|---|
| 161 | Use of uninitialized value in multiplication (*) at - line 9.
|
|---|
| 162 | ########
|
|---|
| 163 | # sv.c
|
|---|
| 164 | use warnings 'uninitialized' ;
|
|---|
| 165 | $x = $y + 1 ; # f
|
|---|
| 166 | no warnings 'uninitialized' ;
|
|---|
| 167 | $x = $z + 1 ; # f
|
|---|
| 168 | EXPECT
|
|---|
| 169 | Use of uninitialized value in addition (+) at - line 3.
|
|---|
| 170 | ########
|
|---|
| 171 | # sv.c
|
|---|
| 172 | use warnings 'uninitialized' ;
|
|---|
| 173 | $x = chop undef ; # g
|
|---|
| 174 | no warnings 'uninitialized' ;
|
|---|
| 175 | $x = chop undef ; # g
|
|---|
| 176 | EXPECT
|
|---|
| 177 | Modification of a read-only value attempted at - line 3.
|
|---|
| 178 | ########
|
|---|
| 179 | # sv.c
|
|---|
| 180 | use warnings 'uninitialized' ;
|
|---|
| 181 | $x = chop $y ; # h
|
|---|
| 182 | no warnings 'uninitialized' ;
|
|---|
| 183 | $x = chop $z ; # h
|
|---|
| 184 | EXPECT
|
|---|
| 185 | Use of uninitialized value in scalar chop at - line 3.
|
|---|
| 186 | ########
|
|---|
| 187 | # sv.c (sv_2pv)
|
|---|
| 188 | package fred ;
|
|---|
| 189 | sub TIESCALAR { my $x ; bless \$x}
|
|---|
| 190 | sub FETCH { return undef }
|
|---|
| 191 | sub STORE { return 1 }
|
|---|
| 192 | package main ;
|
|---|
| 193 | tie $A, 'fred' ;
|
|---|
| 194 | use warnings 'uninitialized' ;
|
|---|
| 195 | $B = "" ;
|
|---|
| 196 | $B .= $A ;
|
|---|
| 197 | no warnings 'uninitialized' ;
|
|---|
| 198 | $C = "" ;
|
|---|
| 199 | $C .= $A ;
|
|---|
| 200 | EXPECT
|
|---|
| 201 | Use of uninitialized value in concatenation (.) or string at - line 10.
|
|---|
| 202 | ########
|
|---|
| 203 | # perlbug 20011116.125
|
|---|
| 204 | use warnings 'uninitialized';
|
|---|
| 205 | $a = undef;
|
|---|
| 206 | $foo = join '', $a, "\n";
|
|---|
| 207 | $foo = "$a\n";
|
|---|
| 208 | $foo = "a:$a\n";
|
|---|
| 209 | EXPECT
|
|---|
| 210 | Use of uninitialized value in join or string at - line 4.
|
|---|
| 211 | Use of uninitialized value in concatenation (.) or string at - line 5.
|
|---|
| 212 | Use of uninitialized value in concatenation (.) or string at - line 6.
|
|---|
| 213 | ########
|
|---|
| 214 | # sv.c
|
|---|
| 215 | use warnings 'numeric' ;
|
|---|
| 216 | sub TIESCALAR{bless[]} ;
|
|---|
| 217 | sub FETCH {"def"} ;
|
|---|
| 218 | tie $a,"main" ;
|
|---|
| 219 | my $b = 1 + $a;
|
|---|
| 220 | no warnings 'numeric' ;
|
|---|
| 221 | my $c = 1 + $a;
|
|---|
| 222 | EXPECT
|
|---|
| 223 | Argument "def" isn't numeric in addition (+) at - line 6.
|
|---|
| 224 | ########
|
|---|
| 225 | # sv.c
|
|---|
| 226 | use warnings 'numeric' ;
|
|---|
| 227 | my $x = 1 + "def" ;
|
|---|
| 228 | no warnings 'numeric' ;
|
|---|
| 229 | my $z = 1 + "def" ;
|
|---|
| 230 | EXPECT
|
|---|
| 231 | Argument "def" isn't numeric in addition (+) at - line 3.
|
|---|
| 232 | ########
|
|---|
| 233 | # sv.c
|
|---|
| 234 | use warnings 'numeric' ;
|
|---|
| 235 | my $a = "def" ;
|
|---|
| 236 | my $x = 1 + $a ;
|
|---|
| 237 | no warnings 'numeric' ;
|
|---|
| 238 | my $y = 1 + $a ;
|
|---|
| 239 | EXPECT
|
|---|
| 240 | Argument "def" isn't numeric in addition (+) at - line 4.
|
|---|
| 241 | ########
|
|---|
| 242 | # sv.c
|
|---|
| 243 | use warnings 'numeric' ; use integer ;
|
|---|
| 244 | my $a = "def" ;
|
|---|
| 245 | my $x = 1 + $a ;
|
|---|
| 246 | no warnings 'numeric' ;
|
|---|
| 247 | my $z = 1 + $a ;
|
|---|
| 248 | EXPECT
|
|---|
| 249 | Argument "def" isn't numeric in integer addition (+) at - line 4.
|
|---|
| 250 | ########
|
|---|
| 251 | # sv.c
|
|---|
| 252 | use warnings 'numeric' ;
|
|---|
| 253 | my $x = 1 & "def" ;
|
|---|
| 254 | no warnings 'numeric' ;
|
|---|
| 255 | my $z = 1 & "def" ;
|
|---|
| 256 | EXPECT
|
|---|
| 257 | Argument "def" isn't numeric in bitwise and (&) at - line 3.
|
|---|
| 258 | ########
|
|---|
| 259 | # sv.c
|
|---|
| 260 | use warnings 'numeric' ;
|
|---|
| 261 | my $x = pack i => "def" ;
|
|---|
| 262 | no warnings 'numeric' ;
|
|---|
| 263 | my $z = pack i => "def" ;
|
|---|
| 264 | EXPECT
|
|---|
| 265 | Argument "def" isn't numeric in pack at - line 3.
|
|---|
| 266 | ########
|
|---|
| 267 | # sv.c
|
|---|
| 268 | use warnings 'numeric' ;
|
|---|
| 269 | my $a = "d\0f" ;
|
|---|
| 270 | my $x = 1 + $a ;
|
|---|
| 271 | no warnings 'numeric' ;
|
|---|
| 272 | my $z = 1 + $a ;
|
|---|
| 273 | EXPECT
|
|---|
| 274 | Argument "d\0f" isn't numeric in addition (+) at - line 4.
|
|---|
| 275 | ########
|
|---|
| 276 | # sv.c
|
|---|
| 277 | use warnings 'redefine' ;
|
|---|
| 278 | sub fred {}
|
|---|
| 279 | sub joe {}
|
|---|
| 280 | *fred = \&joe ;
|
|---|
| 281 | no warnings 'redefine' ;
|
|---|
| 282 | sub jim {}
|
|---|
| 283 | *jim = \&joe ;
|
|---|
| 284 | EXPECT
|
|---|
| 285 | Subroutine main::fred redefined at - line 5.
|
|---|
| 286 | ########
|
|---|
| 287 | # sv.c
|
|---|
| 288 | use warnings 'printf' ;
|
|---|
| 289 | open F, ">".($^O eq 'VMS'? 'NL:' : '/dev/null') ;
|
|---|
| 290 | printf F "%z\n" ;
|
|---|
| 291 | my $a = sprintf "%z" ;
|
|---|
| 292 | printf F "%" ;
|
|---|
| 293 | $a = sprintf "%" ;
|
|---|
| 294 | printf F "%\x02" ;
|
|---|
| 295 | $a = sprintf "%\x02" ;
|
|---|
| 296 | no warnings 'printf' ;
|
|---|
| 297 | printf F "%z\n" ;
|
|---|
| 298 | $a = sprintf "%z" ;
|
|---|
| 299 | printf F "%" ;
|
|---|
| 300 | $a = sprintf "%" ;
|
|---|
| 301 | printf F "%\x02" ;
|
|---|
| 302 | $a = sprintf "%\x02" ;
|
|---|
| 303 | EXPECT
|
|---|
| 304 | Invalid conversion in printf: "%z" at - line 4.
|
|---|
| 305 | Invalid conversion in sprintf: "%z" at - line 5.
|
|---|
| 306 | Invalid conversion in printf: end of string at - line 6.
|
|---|
| 307 | Invalid conversion in sprintf: end of string at - line 7.
|
|---|
| 308 | Invalid conversion in printf: "%\002" at - line 8.
|
|---|
| 309 | Invalid conversion in sprintf: "%\002" at - line 9.
|
|---|
| 310 | ########
|
|---|
| 311 | # sv.c
|
|---|
| 312 | use warnings 'misc' ;
|
|---|
| 313 | *a = undef ;
|
|---|
| 314 | no warnings 'misc' ;
|
|---|
| 315 | *b = undef ;
|
|---|
| 316 | EXPECT
|
|---|
| 317 | Undefined value assigned to typeglob at - line 3.
|
|---|
| 318 | ########
|
|---|
| 319 | # sv.c
|
|---|
| 320 | use warnings 'y2k';
|
|---|
| 321 | use Config;
|
|---|
| 322 | BEGIN {
|
|---|
| 323 | unless ($Config{ccflags} =~ /Y2KWARN/) {
|
|---|
| 324 | print "SKIPPED\n# perl not built with -DPERL_Y2KWARN";
|
|---|
| 325 | exit 0;
|
|---|
| 326 | }
|
|---|
| 327 | $|=1;
|
|---|
| 328 | }
|
|---|
| 329 | my $x;
|
|---|
| 330 | my $yy = 78;
|
|---|
| 331 | $x = printf "19%02d\n", $yy;
|
|---|
| 332 | $x = sprintf "#19%02d\n", $yy;
|
|---|
| 333 | $x = printf " 19%02d\n", 78;
|
|---|
| 334 | $x = sprintf "19%02d\n", 78;
|
|---|
| 335 | $x = printf "319%02d\n", $yy;
|
|---|
| 336 | $x = sprintf "319%02d\n", $yy;
|
|---|
| 337 | no warnings 'y2k';
|
|---|
| 338 | $x = printf "19%02d\n", $yy;
|
|---|
| 339 | $x = sprintf "19%02d\n", $yy;
|
|---|
| 340 | $x = printf "19%02d\n", 78;
|
|---|
| 341 | $x = sprintf "19%02d\n", 78;
|
|---|
| 342 | EXPECT
|
|---|
| 343 | Possible Y2K bug: %d format string following '19' at - line 16.
|
|---|
| 344 | Possible Y2K bug: %d format string following '19' at - line 13.
|
|---|
| 345 | 1978
|
|---|
| 346 | Possible Y2K bug: %d format string following '19' at - line 14.
|
|---|
| 347 | Possible Y2K bug: %d format string following '19' at - line 15.
|
|---|
| 348 | 1978
|
|---|
| 349 | 31978
|
|---|
| 350 | 1978
|
|---|
| 351 | 1978
|
|---|
| 352 | ########
|
|---|
| 353 | # sv.c
|
|---|
| 354 | use warnings 'numeric' ;
|
|---|
| 355 | $a = "\x{100}\x{200}" * 42;
|
|---|
| 356 | no warnings 'numeric' ;
|
|---|
| 357 | $a = "\x{100}\x{200}" * 42;
|
|---|
| 358 | EXPECT
|
|---|
| 359 | Argument "\x{100}\x{200}" isn't numeric in multiplication (*) at - line 3.
|
|---|
| 360 | ########
|
|---|
| 361 | # sv.c
|
|---|
| 362 | use warnings 'numeric' ;
|
|---|
| 363 | $a = "\x{100}\x{200}"; $a = -$a;
|
|---|
| 364 | no warnings 'numeric' ;
|
|---|
| 365 | $a = "\x{100}\x{200}"; $a = -$a;
|
|---|
| 366 | EXPECT
|
|---|
| 367 | Argument "\x{100}\x{200}" isn't numeric in negation (-) at - line 3.
|
|---|
| 368 | ########
|
|---|
| 369 | # sv.c
|
|---|
| 370 | open F, ">".($^O eq 'VMS'? 'NL:' : '/dev/null') ;
|
|---|
| 371 | use warnings 'printf';
|
|---|
| 372 | $a = "a\nb";
|
|---|
| 373 | $s = sprintf "%4s", $a;
|
|---|
| 374 | printf F "%4s", $a;
|
|---|
| 375 | $s = sprintf "%-4s", $a;
|
|---|
| 376 | printf F "%-4s", $a;
|
|---|
| 377 | $s = sprintf "%*s", -4, $a;
|
|---|
| 378 | no warnings 'printf';
|
|---|
| 379 | $s = sprintf "%4s", $a;
|
|---|
| 380 | printf F "%4s", $a;
|
|---|
| 381 | $s = sprintf "%-4s", $a;
|
|---|
| 382 | printf F "%-4s", $a;
|
|---|
| 383 | EXPECT
|
|---|
| 384 | Newline in left-justified string for sprintf at - line 7.
|
|---|
| 385 | Newline in left-justified string for printf at - line 8.
|
|---|
| 386 | Newline in left-justified string for sprintf at - line 9.
|
|---|