This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Common vars check should account for OPpTARGET_MY
authorFather Chrysostomos <sprout@cpan.org>
Sat, 18 Oct 2014 23:37:41 +0000 (16:37 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Sun, 19 Oct 2014 00:06:52 +0000 (17:06 -0700)
commit0017a11ac92ab719250c9d2389dd14d7238eeefb
tree0ac5686a556d24c6ce43ca7a8379f344e367316b
parent072bd2c6128c9c7a30589c705ce6a802e0c158bd
Common vars check should account for OPpTARGET_MY

When checking for common vars on either side of a list assignment (to
see whether we need to make temporary copies), we need to account for
the OPpTARGET_MY optimisation which transforms ‘$lex = $foo . $bar’
into a simple ‘$foo . $bar’ that writes directly to $lex instead of
writing to a scratch variable and returning that.

This was printing foofoo instead of foobar:

$ ./perl -Ilib -le 'my ($a,$b); $foo="foo"; $bar="bar"; ($a,$b) = ($b=$foo."", $a=$bar.""); print $a,$b'
op.c
t/op/list.t