better diagnostic for do{} used as lvalue
authorGurusamy Sarathy <gsar@cpan.org>
Wed, 23 Sep 1998 03:40:57 +0000 (03:40 +0000)
committerGurusamy Sarathy <gsar@cpan.org>
Wed, 23 Sep 1998 03:40:57 +0000 (03:40 +0000)
p4raw-id: //depot/perl@1808

op.c
pod/perlport.pod

diff --git a/op.c b/op.c
index 5b06f6f..58cf511 100644 (file)
--- a/op.c
+++ b/op.c
@@ -1135,7 +1135,8 @@ mod(OP *o, I32 type)
        if (type == OP_GREPSTART || type == OP_ENTERSUB || type == OP_REFGEN)
            break;
        yyerror(form("Can't modify %s in %s",
-                    op_desc[o->op_type],
+                    (o->op_type == OP_NULL && (o->op_flags & OPf_SPECIAL)
+                     ? "do block" : op_desc[o->op_type]),
                     type ? op_desc[type] : "local"));
        return o;
 
@@ -1264,7 +1265,9 @@ mod(OP *o, I32 type)
        break;
 
     case OP_NULL:
-       if (!(o->op_flags & OPf_KIDS))
+       if (o->op_flags & OPf_SPECIAL)          /* do BLOCK */
+           goto nomod;
+       else if (!(o->op_flags & OPf_KIDS))
            break;
        if (o->op_targ != OP_LIST) {
            mod(cBINOPo->op_first, type);
index 79ca767..0b9d054 100644 (file)
@@ -84,7 +84,7 @@ should be considered a perpetual work in progress
 
 =head2 Newlines
 
-In most operating systems, lines in files are separated with newlines.
+In most operating systems, lines in files are terminated by newlines.
 Just what is used as a newline may vary from OS to OS.  Unix
 traditionally uses C<\012>, one kind of Windows I/O uses C<\015\012>,
 and S<Mac OS> uses C<\015>.