develooper Front page | perl.perl5.changes | Postings from April 2008

Change 33714: Re: wrong line numbers in elsif()

From:
Rafael Garcia-Suarez
Date:
April 19, 2008 05:15
Subject:
Change 33714: Re: wrong line numbers in elsif()
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.



Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About