Change 11822 by ams@ams-lustre on 2001/09/02 02:54:50
Subject: RE: [PATCH] Add a nextstate into empty blocks
From: Ilmari Karonen <[EMAIL PROTECTED]>
Date: Sun, 19 Aug 2001 19:27:33 +0300 (EET DST)
Message-Id: <Pine.SOL.3.96.1010819163840.8384B-100000@simpukka>
(op/sub_lval.t updated to take new error message into account.)
Affected files ...
... //depot/perl/op.c#436 edit
... //depot/perl/t/op/sub_lval.t#3 edit
Differences ...
==== //depot/perl/op.c#436 (text) ====
Index: perl/op.c
--- perl/op.c.~1~ Sat Sep 1 21:00:05 2001
+++ perl/op.c Sat Sep 1 21:00:05 2001
@@ -2155,7 +2155,10 @@
Perl_block_end(pTHX_ I32 floor, OP *seq)
{
int needblockscope = PL_hints & HINT_BLOCK_SCOPE;
- OP* retval = scalarseq(seq);
+ line_t copline = PL_copline;
+ /* there should be a nextstate in every block */
+ OP* retval = seq ? scalarseq(seq) : newSTATEOP(0, Nullch, seq);
+ PL_copline = copline; /* XXX newSTATEOP may reset PL_copline */
LEAVE_SCOPE(floor);
PL_pad_reset_pending = FALSE;
PL_compiling.op_private = PL_hints;
@@ -4704,7 +4707,8 @@
&& (!const_sv || sv_cmp(cv_const_sv(cv), const_sv))))
{
line_t oldline = CopLINE(PL_curcop);
- CopLINE_set(PL_curcop, PL_copline);
+ if (PL_copline != NOLINE)
+ CopLINE_set(PL_curcop, PL_copline);
Perl_warner(aTHX_ WARN_REDEFINE,
CvCONST(cv) ? "Constant subroutine %s redefined"
: "Subroutine %s redefined", name);
@@ -5177,8 +5181,8 @@
if ((cv = GvFORM(gv))) {
if (ckWARN(WARN_REDEFINE)) {
line_t oldline = CopLINE(PL_curcop);
-
- CopLINE_set(PL_curcop, PL_copline);
+ if (PL_copline != NOLINE)
+ CopLINE_set(PL_curcop, PL_copline);
Perl_warner(aTHX_ WARN_REDEFINE, "Format %s redefined",name);
CopLINE_set(PL_curcop, oldline);
}
==== //depot/perl/t/op/sub_lval.t#3 (xtext) ====
Index: perl/t/op/sub_lval.t
--- perl/t/op/sub_lval.t.~1~ Sat Sep 1 21:00:05 2001
+++ perl/t/op/sub_lval.t Sat Sep 1 21:00:05 2001
@@ -251,7 +251,7 @@
EOE
print "# '$_'.\nnot "
- unless /Can\'t return a readonly value from lvalue subroutine/;
+ unless /Empty array returned from lvalue subroutine in scalar context/;
print "ok 31\n";
sub lv10 : lvalue {}
End of Patch.