op.c: In newBINOP, set up op_last before CHECKOP
authorFather Chrysostomos <sprout@cpan.org>
Sun, 21 Sep 2014 06:33:26 +0000 (23:33 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 11 Oct 2014 04:54:05 +0000 (21:54 -0700)
commitc0d680ed1b5f1cf4e78338bc96d26e636cbc60d6
treee75a7551445ce8279f5161a08633a02bc832fad0
parentc87926f5ed4dd7c1701a810f4ef8059f19a375c6
op.c: In newBINOP, set up op_last before CHECKOP

Set up op_last pointers in newBINOP before calling the op-specific
ck_* routine.

That way, since this op sub-tree is well-formed from the outset, we
don’t need as much fix-up code elsewhere to account for the case where
the binop has been embedded inside a larger op tree (state var ini-
tialisation).

The repetition operator is an odd bird.  If the lhs is a list of one
item, it is effectively an unop, though still of class binop.  Though
op_last would usually point to the last immediate child, it ended
up null instead.  B::Deparse was written to expect that, so let’s
keep it that way by setting it to null in ck_repeat, now that the
last = first->sibling assignment in newBINOP (which used to do it)
happens earlier.
op.c