X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perly.y;h=9ca64a8757ff5ddbd09f61122ecf88f063131d34;hb=19b95bf092bc6fdb9455fe107fc46111b0a1ec31;hp=e4515da2a224e186871d6b8d03ec16411998e7bf;hpb=295222340ad6893caa0a1c3479155f88ea290dc3;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perly.y b/perly.y index e4515da..9ca64a8 100644 --- a/perly.y +++ b/perly.y @@ -390,9 +390,8 @@ 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), - ($5 ? newOP(OP_NULL, 0) : $5) ), + CopLABEL_alloc(($1)->tk_lval.pval), + ($5 ? $5 : newOP(OP_NULL, 0)) ), forop)); token_getmad($2,forop,'3'); @@ -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 */