diff options
author | Ilmari Karonen <iltzu@sci.fi> | 2001-08-19 22:27:33 +0300 |
---|---|---|
committer | Abhijit Menon-Sen <ams@wiw.org> | 2001-09-02 02:54:50 +0000 |
commit | d8a34499b0ed1aed7c7d5741ef20a99cbe385896 (patch) | |
tree | 5d35d053cbc29fc49fb0832f2e75bedd29f4497b /op.c | |
parent | 94bf5962d98bd99abeac287cb07a0bfb42e8b55f (diff) | |
download | perl-d8a34499b0ed1aed7c7d5741ef20a99cbe385896.tar.gz |
RE: [PATCH] Add a nextstate into empty blocks
Message-Id: <Pine.SOL.3.96.1010819163840.8384B-100000@simpukka>
(op/sub_lval.t updated to take new error message into account.)
p4raw-id: //depot/perl@11822
Diffstat (limited to 'op.c')
-rw-r--r-- | op.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -2155,7 +2155,10 @@ OP* 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 @@ Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) && (!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 @@ Perl_newFORM(pTHX_ I32 floor, OP *o, OP *block) 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); } |