diff options
author | Dave Mitchell <davem@fdisolutions.com> | 2008-06-22 19:05:31 +0000 |
---|---|---|
committer | Dave Mitchell <davem@fdisolutions.com> | 2008-06-22 19:05:31 +0000 |
commit | 8b0dea507b8f946d8546917b8fda74bfbf233ac0 (patch) | |
tree | b8655ccd4befccb5eacf2fa46b7f914d3cb5a34b /t | |
parent | a73918ec93a602356d85f41060eaacc67da45b23 (diff) | |
download | perl-8b0dea507b8f946d8546917b8fda74bfbf233ac0.tar.gz |
Incorrect variable reported in uninitialized value warning.
Ops that can return undef even for defined args, could mistakenly
warn that the arg was undefined.
p4raw-id: //depot/perl@34077
Diffstat (limited to 't')
-rw-r--r-- | t/lib/warnings/9uninit | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/t/lib/warnings/9uninit b/t/lib/warnings/9uninit index 16ce1b8c88..2073f9230e 100644 --- a/t/lib/warnings/9uninit +++ b/t/lib/warnings/9uninit @@ -1411,3 +1411,130 @@ EXPECT Use of uninitialized value in reverse at - line 4. Use of uninitialized value $r1 in reverse at - line 5. Use of uninitialized value $r2 in reverse at - line 6. +######## +use warnings 'uninitialized'; +# +# ops that can return undef for defined args +# +my $nofile = '/no/such/file'; +my $nocmd = '/no/such/command'; +my $v; +$v = 1 + `$nocmd`; +$v = 1 + qx($nocmd); +my $f = ""; +$v = 1 + open($f, $nofile); +# *** pipe() not tested +$v = 1 + fileno($nofile); +$v = 1 + binmode($nofile); +$v = 1 + tied($nofile); +$v = 1 + getc($nofile); +$v = 1 + sysread($nofile, my $buf,1); +$v = 1 + eval { send($nofile, $buf,0) }; +# *** ioctl not tested +# *** socket not tested +# *** socketpair not tested +# *** bind not tested +# *** connect not tested +# *** listen not tested +$v = 1 + eval { accept($fh, $nofile) }; +# *** shutdown not tested +# *** setsockopt not tested +# *** getpeername not tested +$v = 1 + (-r $nofile); +$v = 1 + (-w $nofile); +$v = 1 + (-x $nofile); +$v = 1 + (-o $nofile); +$v = 1 + (-R $nofile); +$v = 1 + (-W $nofile); +$v = 1 + (-X $nofile); +$v = 1 + (-O $nofile); +$v = 1 + (-e $nofile); +$v = 1 + (-z $nofile); +$v = 1 + (-s $nofile); +$v = 1 + (-f $nofile); +$v = 1 + (-d $nofile); +$v = 1 + (-l $nofile); +$v = 1 + (-p $nofile); +$v = 1 + (-S $nofile); +$v = 1 + (-b $nofile); +$v = 1 + (-c $nofile); +$v = 1 + (-t $nofile); +$v = 1 + (-u $nofile); +$v = 1 + (-g $nofile); +$v = 1 + (-k $nofile); +$v = 1 + (-T $nofile); +$v = 1 + (-B $nofile); +$v = 1 + (-M $nofile); +$v = 1 + (-A $nofile); +$v = 1 + (-C $nofile); +$v = 1 + eval { readlink $nofile }; +$v = 1 + opendir($f, $nofile); +# *** readdir not tested +# *** telldir not tested +# *** seekdir not tested +# *** rewinddir not tested +# *** closedir not tested +# *** gmtime not tested +# *** alarm not tested +# *** semget not tested +# *** getlogin not tested +$v = 1 + undef; +my $x = 1; $v = 1 + undef($x); +my $emptys = ""; +$v = 1 + substr($emptys,2,1); +my @emptya; +$v = 1 + each @emptya; +my @emptyh; +$v = 1 + each %emptyh; +$v = 1 + sort @emptya; +my $zero = 0; $v = 1 + caller($zero); +$v = 1 + do $nofile; + +EXPECT +Use of uninitialized value in addition (+) at - line 8. +Use of uninitialized value in addition (+) at - line 9. +Use of uninitialized value in addition (+) at - line 11. +Use of uninitialized value in addition (+) at - line 13. +Use of uninitialized value in addition (+) at - line 14. +Use of uninitialized value in addition (+) at - line 15. +Use of uninitialized value in addition (+) at - line 16. +Use of uninitialized value in addition (+) at - line 17. +Use of uninitialized value in addition (+) at - line 18. +Use of uninitialized value in addition (+) at - line 25. +Use of uninitialized value in addition (+) at - line 29. +Use of uninitialized value in addition (+) at - line 30. +Use of uninitialized value in addition (+) at - line 31. +Use of uninitialized value in addition (+) at - line 32. +Use of uninitialized value in addition (+) at - line 33. +Use of uninitialized value in addition (+) at - line 34. +Use of uninitialized value in addition (+) at - line 35. +Use of uninitialized value in addition (+) at - line 36. +Use of uninitialized value in addition (+) at - line 37. +Use of uninitialized value in addition (+) at - line 38. +Use of uninitialized value in addition (+) at - line 39. +Use of uninitialized value in addition (+) at - line 40. +Use of uninitialized value in addition (+) at - line 41. +Use of uninitialized value in addition (+) at - line 42. +Use of uninitialized value in addition (+) at - line 43. +Use of uninitialized value in addition (+) at - line 44. +Use of uninitialized value in addition (+) at - line 45. +Use of uninitialized value in addition (+) at - line 46. +Use of uninitialized value in addition (+) at - line 47. +Use of uninitialized value in addition (+) at - line 48. +Use of uninitialized value in addition (+) at - line 49. +Use of uninitialized value in addition (+) at - line 50. +Use of uninitialized value in addition (+) at - line 51. +Use of uninitialized value in addition (+) at - line 52. +Use of uninitialized value in addition (+) at - line 53. +Use of uninitialized value in addition (+) at - line 54. +Use of uninitialized value in addition (+) at - line 55. +Use of uninitialized value in addition (+) at - line 56. +Use of uninitialized value in addition (+) at - line 57. +Use of uninitialized value in addition (+) at - line 67. +Use of uninitialized value in addition (+) at - line 68. +Use of uninitialized value in addition (+) at - line 70. +Use of uninitialized value in addition (+) at - line 72. +Use of uninitialized value in addition (+) at - line 74. +Use of uninitialized value in addition (+) at - line 75. +Use of uninitialized value in addition (+) at - line 76. +Use of uninitialized value in addition (+) at - line 77. |