Warnings within the conditional of until() and for() are not reported
Nicholas Clark [Sun, 27 Apr 2008 10:20:10 +0000 (10:20 +0000)]
with the correct line number. (See change 33756). Curiously, warnings
for the third expression of for() have the correct line number.

p4raw-id: //depot/perl@33758

t/lib/warnings/9uninit

index b1c2a4f..09bd371 100644 (file)
@@ -1348,6 +1348,49 @@ EXPECT
 Use of uninitialized value $c in numeric eq (==) at - line 5.
 Use of uninitialized value $c in numeric eq (==) at - line 5.
 ########
+# TODO long standing bug - conditions of until loops
+use warnings;
+
+my $c;
+my $d;
+until ($c == 1) {
+  # a
+  # few
+  # blank
+  # lines
+  $c = 1 if ++$d == 2;
+}
+EXPECT
+Use of uninitialized value $c in numeric eq (==) at - line 5.
+Use of uninitialized value $c in numeric eq (==) at - line 5.
+########
+# TODO long standing bug - conditions of for loops
+use warnings;
+
+my $c;
+my $d;
+for ($d = 1; $c == 0 && $d; ) {
+  # a
+  # few
+  # blank
+  # lines
+  undef $d;
+}
+
+my $e;
+for ($d = 2; $d > 0; $e = !($c == 0)) {
+  # a
+  # few
+  # blank
+  # lines
+  --$d;
+}
+EXPECT
+Use of uninitialized value $c in numeric eq (==) at - line 5.
+Use of uninitialized value $c in numeric eq (==) at - line 5.
+Use of uninitialized value $c in numeric eq (==) at - line 14.
+Use of uninitialized value $c in numeric eq (==) at - line 14.
+########
 # TODO long standing bug - more general variant of the above problem
 use warnings;
 my $undef;