Explicitely point to $. when it causes an uninitialized warning for ranges in scalar...
authorVincent Pit <perl@profvince.com>
Tue, 26 May 2009 14:56:39 +0000 (16:56 +0200)
committerVincent Pit <perl@profvince.com>
Tue, 26 May 2009 15:05:16 +0000 (17:05 +0200)
sv.c
t/lib/warnings/9uninit

diff --git a/sv.c b/sv.c
index 1dad3cf..9944724 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -12984,6 +12984,14 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv,
          Need a better fix at dome point. DAPM 11/2007 */
        break;
 
+    case OP_FLIP:
+    case OP_FLOP:
+    {
+       GV * const gv = gv_fetchpvs(".", GV_NOTQUAL, SVt_PV);
+       if (gv && GvSV(gv) == uninit_sv)
+           return newSVpvs_flags("$.", SVs_TEMP);
+       goto do_op;
+    }
 
     case OP_POS:
        /* def-ness of rval pos() is independent of the def-ness of its arg */
index 50db322..50e7f50 100644 (file)
@@ -446,6 +446,29 @@ Use of uninitialized value $m1 in exists at - line 7.
 Use of uninitialized value $g1 in exists at - line 8.
 ########
 use warnings 'uninitialized';
+my ($m1, $m2);
+my ($v, @a);
+
+local $.;
+
+@ma = (1 .. 2);
+@ma = ($m1 .. 2);
+@ma = (1 .. $m2);
+@ma = ($m1 .. $m2);
+
+$v = (1 .. 2);
+$v = ($m1 .. 2);
+$v = (1 .. $m2);
+$v = ($m1 .. $m2);
+EXPECT
+Use of uninitialized value $m1 in range (or flop) at - line 8.
+Use of uninitialized value $m2 in range (or flop) at - line 9.
+Use of uninitialized value in range (or flop) at - line 10.
+Use of uninitialized value in range (or flop) at - line 10.
+Use of uninitialized value $. in range (or flip) at - line 12.
+Use of uninitialized value $. in range (or flip) at - line 14.
+########
+use warnings 'uninitialized';
 my ($m1, $v);
 our ($g1);