Deparse split-to-our-array correctly
authorFather Chrysostomos <sprout@cpan.org>
Fri, 10 Oct 2014 20:56:24 +0000 (13:56 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Fri, 10 Oct 2014 21:26:46 +0000 (14:26 -0700)
commitde183bbb2f50be045697c1759931907c5e7bdf28
tree6822814ed2966b5223de538eedf5ab87cd6a5752
parent8ba4fd86c5b8f70c4954c5b4cc5e2e6aea69e97c
Deparse split-to-our-array correctly

$ ./perl -Ilib -MO=Deparse -e 'our @x = split //, $a'
@x = split(//, $a, 0);

The ‘our’ disappears because ‘split’ swallows up the assignment and
writes to @x directly.  But the result is that no OUR_INTRO flag is
left in the op tree.

Fixing this based on the current op tree is very complicated.  So
this commit sets the flag on the split op and makes B::Deparse
look for it.
lib/B/Deparse.pm
lib/B/Deparse.t
lib/B/Op_private.pm
op.c
opcode.h
regen/op_private