The code in newCONDOP can be made visibly simpler by using intermediate
[p5sagit/p5-mst-13.2.git] / perly.y
diff --git a/perly.y b/perly.y
index e4515da..2abf7a1 100644 (file)
--- a/perly.y
+++ b/perly.y
@@ -390,8 +390,7 @@ loop        :       label WHILE '(' remember texpr ')' mintro mblock cont
 #ifdef MAD
                          forop = newUNOP(OP_NULL, 0, append_elem(OP_LINESEQ,
                                newSTATEOP(0,
-                                          (($1)->tk_lval.pval
-                                          ?savepv(($1)->tk_lval.pval):Nullch),
+                                          CopLABEL_alloc(($1)->tk_lval.pval),
                                           ($5 ? newOP(OP_NULL, 0) : $5) ),
                                forop));
 
@@ -404,8 +403,7 @@ loop        :       label WHILE '(' remember texpr ')' mintro mblock cont
 #else
                          if ($5) {
                                forop = append_elem(OP_LINESEQ,
-                                        newSTATEOP(0, ($1?savepv($1):Nullch),
-                                                  $5),
+                                        newSTATEOP(0, CopLABEL_alloc($1), $5),
                                        forop);
                          }
 
@@ -1180,10 +1178,14 @@ term    :       termbinop
                        { $$ = newUNOP(IVAL($1), 0, $2);
                          TOKEN_GETMAD($1,$$,'o');
                        }
-       |       REQUIRE                              /* require, $_ implied *//* FIMXE for MAD needed? */
-                       { $$ = newOP(OP_REQUIRE, $1 ? OPf_SPECIAL : 0); }
-       |       REQUIRE term                         /* require Foo *//* FIMXE for MAD needed? */
-                       { $$ = newUNOP(OP_REQUIRE, $1 ? OPf_SPECIAL : 0, $2); }
+       |       REQUIRE                              /* require, $_ implied */
+                       { $$ = newOP(OP_REQUIRE, $1 ? OPf_SPECIAL : 0);
+                         TOKEN_GETMAD($1,$$,'o');
+                       }
+       |       REQUIRE term                         /* require Foo */
+                       { $$ = newUNOP(OP_REQUIRE, $1 ? OPf_SPECIAL : 0, $2);
+                         TOKEN_GETMAD($1,$$,'o');
+                       }
        |       UNIOPSUB
                        { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar($1)); }
        |       UNIOPSUB term                        /* Sub treated as unop */