Add lvalue_refs feature feature
Increase $feature::VERSION to 1.38
Add experimental::lvalue_refs warnings category
Increase $warnings::VERSION to 1.27
To-do tests for scalar lvalue refs
op.c:ck_spair: Remove redundant checks

Neither the av nor the hv ops have the OA_RETSCALAR flag, so these
checks are unreachable.

These checks go all the way back to a0d0e21e (perl 5.000).
Add refassign op type
Increase $Opcode::VERSION to 1.29
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.
First stab at lexical scalar aliases

No \my$x= yet.  Only my $x; \$x =....

It does not work properly with variables closed over from outside;
hence, all the to-do tests fail still, since they do the assign-
ment in evals.

But this much works:

$ ./miniperl -Ilib -Mfeature=:all -e 'my $m; \$m = \$n; warn \$m; warn \$n'
Lvalue references are experimental at -e line 1.
SCALAR(0x7fa04b805510) at -e line 1.
SCALAR(0x7fa04b805510) at -e line 1.
Document lvalue ref diagnostics

Also, use ‘a SCALAR reference’ rather than ‘a scalar reference’, to
match the style used elsewhere.
lvref.t: To-do tests for closures
lvref.t: Remove to-do and eval from passing test

This one passing test was failing inside the eval because closures
are not yet supported.  (That’s why I added explicit closure tests
in the previous commit.)
lvref.t: Tests for error massages
Simple package scalar lvalue refs

\$::x = ... works, but not \local $x yet.
lvref.t: To-do test for PADSTALE handling
When making lex alias, don’t free old var too soon

It could be exactly the same variable, and the reference on the rhs
could be weak:

use feature ":all";
use Scalar::Util 'weaken';
my $a;
weaken($r = \$a);
\$a = $r;
__END__
Lvalue references are experimental at - line 5.
Segmentation fault: 11
lvret.t: To-do tests for \local $scalar=
lvref.t: To-do tests for foreach \
lvref.t: Test \$foo = \*bar