Change 33714 by rgs@scipion on 2008/04/19 12:08:35
Subject: Re: wrong line numbers in elsif()
From: Paul Johnson <paul@pjcj.net>
Date: Sat, 19 Apr 2008 13:02:06 +0200
Message-ID: <20080419110206.GE32555@pjcj.net>
Affected files ...
... //depot/perl/ext/B/B/Deparse.pm#194 edit
... //depot/perl/ext/B/t/deparse.t#36 edit
Differences ...
==== //depot/perl/ext/B/B/Deparse.pm#194 (text) ====
Index: perl/ext/B/B/Deparse.pm
--- perl/ext/B/B/Deparse.pm#193~33661~ 2008-04-08 08:31:46.000000000 -0700
+++ perl/ext/B/B/Deparse.pm 2008-04-19 05:08:35.000000000 -0700
@@ -2589,6 +2589,12 @@
my $newcond = $newop->first;
my $newtrue = $newcond->sibling;
$false = $newtrue->sibling; # last in chain is OP_AND => no else
+ if ($newcond->name eq "lineseq")
+ {
+ # lineseq to ensure correct line numbers in elsif()
+ # Bug #37302 fixed by change #33710.
+ $newcond = $newcond->first->sibling;
+ }
$newcond = $self->deparse($newcond, 1);
$newtrue = $self->deparse($newtrue, 0);
push @elsifs, "elsif ($newcond) {\n\t$newtrue\n\b}";
==== //depot/perl/ext/B/t/deparse.t#36 (text) ====
Index: perl/ext/B/t/deparse.t
--- perl/ext/B/t/deparse.t#35~33163~ 2008-02-01 02:38:03.000000000 -0800
+++ perl/ext/B/t/deparse.t 2008-04-19 05:08:35.000000000 -0700
@@ -27,7 +27,7 @@
require feature;
feature->import(':5.10');
}
-use Test::More tests => 59;
+use Test::More tests => 60;
use B::Deparse;
my $deparse = B::Deparse->new();
@@ -409,3 +409,10 @@
when ($_ ~~ 'quux') { continue; }
default { 0; }
}
+####
+# 53 conditions in elsifs (regression in change #33710 which fixed bug #37302)
+if ($a) { x(); }
+elsif ($b) { x(); }
+elsif ($a and $b) { x(); }
+elsif ($a or $b) { x(); }
+else { x(); }
End of Patch.