In perl.git, the branch sprout/lvref has been created

<http://perl5.git.perl.org/perl.git/commitdiff/4aa0ef96757f594b2200b1374e05a98412abc307?hp=0000000000000000000000000000000000000000>

        at  4aa0ef96757f594b2200b1374e05a98412abc307 (commit)

- Log -----------------------------------------------------------------
commit 4aa0ef96757f594b2200b1374e05a98412abc307
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Fri Oct 3 19:50:45 2014 -0700

    Handle state vars correctly in ref assignment
    
    Only \state(@_) was handling this correctly, as pp_lvavref
    calls pp_padav.

M       lib/B/Op_private.pm
M       op.c
M       opcode.h
M       pp.c
M       regen/op_private
M       t/op/lvref.t

commit 6aa51e3432bfd21920145f782c7b1f1a08abffed
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Fri Oct 3 16:33:55 2014 -0700

    lvref.t: Tests for \my assignment and scope exit

M       t/op/lvref.t

commit a433e7a55868054bc147ead8bd99c6b6d3509845
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Fri Oct 3 12:40:23 2014 -0700

    Rework lvref.t foreach tests
    
    Remove the to-do marker.
    
    Add tests for package vars, too.
    
    Redo the \my &a test.  I’ve decided not to bother with the ‘my &a’
    syntax for now (if at all).  It is problematic and needs discussion.
    (If ‘my &a’ is allowed in foreach, then it should be allowed else-
    where, but ‘my &a;’ would call a stub.)

M       t/op/lvref.t

commit d1e5dad7ad5819aa7db1c7c4e8fae047dfb02c9c
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Fri Oct 3 12:29:35 2014 -0700

    Get foreach \&foo working
    
    Previously these would crash.  Usually, &foo is wrapped in an entersub
    op which gets converted to rv2cv when refgen applies lvalue context.
    In foreach \&foo, there is no need for us to go the entersub route;
    rather we pass the original rv2cv op directly to refgen without the
    entersub wrapping.  So the resulting op tree is different.  S_lvref
    was not expecting this alternate op tree.

M       op.c

commit 1be322026870f479443186131cb3753ef19d883a
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Thu Oct 2 22:38:27 2014 -0700

    foreach \$var
    
    Some passing tests are still marked to-do.  We need more tests still.

M       cop.h
M       mg.c
M       mg.h
M       op.c
M       perly.act
M       perly.h
M       perly.tab
M       perly.y
M       pp.c
M       pp_ctl.c
M       pp_hot.c

commit d76b39a22e21166eb986b83f17f529338df38993
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Thu Oct 2 21:49:28 2014 -0700

    Add OPpLVREF_ITER flag
    
    An lvalue reference used as an iterator variable will be implemented
    using an lvref op with this flag set.

M       lib/B/Op_private.pm
M       opcode.h
M       regen/op_private

commit 7c546f50175784bc9e7a88e9e28c7abb33d9d21c
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Oct 1 20:18:06 2014 -0700

    Fix err message for $cond ? \bad : ... = ...
    
    The error message code in S_lvref was assuming that it only handled
    list assignment (which was originally the case), but
    
        $condition ? \pos : whatever = ...
    
    goes through that same code path, and that is a scalar assignment.
    
    So pass the assignment type through to S_lvref.

M       op.c
M       t/op/lvref.t

commit 630c69995c15059aed6fdb9819058ea2abf4eb41
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Oct 1 20:00:10 2014 -0700

    Subroutine reference assignment

M       op.c
M       t/op/lvref.t

commit 493f0c676f57720e491de998e4c623f46dd20a42
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Oct 1 18:15:16 2014 -0700

    lvref.t: Repeat bad ref tests with list assignment
    
    List assignment goes through a different code path.  The errors come
    from magic_setlvref in that case, not pp_refassign.

M       t/op/lvref.t

commit b80091aa1fcc7d3fc0b924148cd9cb2598ca4e3c
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Tue Sep 30 22:28:48 2014 -0700

    lvref.t: do-block err msg is no longer to-do
    
    The previous commit’s rearrangement of things fixed this, too.

M       t/op/lvref.t

commit 8f862c6656c789ea51f5a4fb2116d056eaed0dde
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Tue Sep 30 22:20:56 2014 -0700

    Make \( ?: ) assignment work
    
    When I first implemented list assignment to lvalue references, I
    thought I could simply modify the kids of the refgen op (\) in one
    spot.  But things like ?: make it necessary to do this recursively.
    So all that code for turning thingies into lvrefs has been moved into
    a separate function patterned after op_lvalue but handling only the
    lvref cases.
    
    (I thought about combining it with op_lvalue’s switch statement, but
    that would require ‘if(type == OP_LVREF) goto nomod;’ too many times,
    which would be harder to maintain.)

M       op.c
M       t/op/lvref.t

commit d8ec1a1135a5687b3ea3f7469329275b65ef7206
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Tue Sep 30 10:28:32 2014 -0700

    lvref.t: Remove unnecessary evals

M       t/op/lvref.t

commit 7425377ebf501b4b80e84ebb9efaf2256a7f649e
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Tue Sep 30 10:27:34 2014 -0700

    Get basic $cond ? \$a : \$b = ... working
    
    When I started working on lvalue references, I envisioned having all
    scalar assignments pass through pp_refassign.  A refassign op repre-
    sents the initial backslash on the lhs *and* the equals sign.  For
    cases like this, there is no single refgen on the lhs.  It turns out
    that the approach I am using for list assignments (where the lhs
    becomes an lvref op that returns a magic scalar that does the aliasing
    when assigned to) is the easiest way to get this working, too.
    
    All this commit has to do is allow ‘sassign’ lvalue context to apply
    to srefgen and fix the completely broken to-do tests.  (I have a ten-
    dency to write broken to-do tests, as I have no way of testing them at
    the time.)

M       op.c
M       t/op/lvref.t

commit 904d8b276c140d765085097211cab2ce234b0ab9
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Mon Sep 29 22:21:21 2014 -0700

    Assignment to \(@array)
    
    This is a slurpy lvalue that gobbles up all the rhs elements, which
    are expected to be references.  So \(@a)=\(@b) makes @a share the
    same elements as @b.
    
    We implement this by pushing a null on to the stack as a special
    marker that pp_aassign will recognise.
    
    I decided to change the wording for the \local(@a)=... error
    slightly, from what my to-do tests had.
    
    Some of the other to-do tests were badly written and had to be
    fixed up a bit.

M       op.c
M       pp.c
M       pp_hot.c
M       t/op/lvref.t

commit cb26e12b89774b69b3587c7f4f966545891af6c7
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Mon Sep 29 22:23:22 2014 -0700

    lvavref needs OPpLVAL_INTRO and OPpPAD_STATE

M       lib/B/Op_private.pm
M       opcode.h
M       regen/op_private

commit 221d6b3bacf48566feb38a58003dfefea5b2a6af
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Mon Sep 29 21:43:53 2014 -0700

    Add lvavref op type
    
    This will be used for slurpy array ref assignments.  \(@a) = \(@b)
    will make @a share the same elements as @b.

M       ext/Opcode/Opcode.pm
M       lib/B/Op_private.pm
M       opcode.h
M       opnames.h
M       pp.c
M       pp_proto.h
M       regen/opcodes

commit 95fbe6319e317608c1b4958b5be6a2d7d8fad7d6
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Mon Sep 29 21:40:28 2014 -0700

    lvref is actually a baseop/unop
    
    When used for pad vars, it is childless.

M       opcode.h
M       regen/opcodes

commit 4fff66428d37aab6b2b245d66b5d75638f0d61f9
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Mon Sep 29 18:03:57 2014 -0700

    List assignment to array and hash refs
    
    (\@a,\%h)=... works, but \(@a) and \(%h) do not.  \(%h) correctly
    croaks.  (\local @a, \local %h)=... also works.

M       mg.c
M       op.c
M       pp.c
M       t/op/lvref.t

commit 4edbfca54710ce5856e9e0e4d1f1051b804edc05
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Mon Sep 29 15:48:24 2014 -0700

    Renumber OPpLVREF_TYPE
    
    to avoid conflicting with OPpPAD_STATE.

M       lib/B/Op_private.pm
M       opcode.h
M       regen/op_private

commit 805548ef3d46a9af1a72c39b0af058c065317825
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 28 22:17:27 2014 -0700

    Assignment to \local @array and \local %hash
    
    Doesn’t work with lhs parentheses yet.

M       pp.c
M       t/op/lvref.t

commit cfa90c6057da90a78e6acd23e86f1a79965a7d57
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 28 11:45:57 2014 -0700

    lvref.t: Tests for localised arrays and hashes

M       t/op/lvref.t

commit a42089227e290f92afd2b7d152b7cf21f2bb776f
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 28 00:53:19 2014 -0700

    lvref.t: Test assigning non-array to array
    
    Same with hashes.

M       t/op/lvref.t

commit eabd215586603f640f1149dfa9acfad359a45334
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 28 00:52:45 2014 -0700

    Simple \@array and \%hash assignment
    
    Parentheses do not work yet.  Neither does local.

M       op.c
M       pp.c
M       t/op/lvref.t

commit 00ece86dd8401abed31580fc69f6849487779d79
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 28 00:42:09 2014 -0700

    lvref.t: To-do tests for hashes
    
    Concerning the error message tests, ‘parenthesized hash’ would be more
    helpful than ‘hash dereference’ or ‘private hash’ (as would be 
provided
    by OP_DESC), as %foo doesn’t look like a hash dereference and ‘private
    hash’ suggests that \%foo= won’t work, whereas it will.

M       t/op/lvref.t

commit 44352021782383005f14bc002a19cc25ff151efb
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 27 22:03:25 2014 -0700

    Add priv flags for the type of lvalue ref

M       lib/B/Op_private.pm
M       opcode.h
M       regen/op_private

commit 5d72e894544b61f4e01ed4cdc273f18aa2aacff0
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 27 18:44:57 2014 -0700

    lvref.t: To-do tests for array ref assignment
    
    The evals are temporary.  Some of the tests don’t even make sense
    with the evals; they are more placeholders and reminders for now
    that tests.

M       t/op/lvref.t

commit e408aa16ebb3d80ea535fecd473a18d8f6f0d74a
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 27 14:17:09 2014 -0700

    pp.c: Fold SvIV into S_localise_aelem_lval
    
    All three callers were doing SvIV, so we can do it in one spot.

M       pp.c

commit 5f61a10bf32cc2288a5fb0275f111640c91f7ee2
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 27 14:15:50 2014 -0700

    pp.c: Some branch prediction hints

M       pp.c

commit bd68528051f3c1769b09cdadebfb812931c7a9ac
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 27 14:15:00 2014 -0700

    Assignment to hash element refs

M       mg.c
M       op.c
M       pp.c
M       t/op/lvref.t

commit 68ccdf3c10664e8b4e8207e12e2a391094687260
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 27 11:07:35 2014 -0700

    pp.c: Consolidate some local aelem code
    
    In the process, avoid a redundant av_fetch for \local$a[0]= and
    \local($a[0])=.

M       pp.c

commit 08ed8787340cf992fbbdd7194772c396b7b9252a
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 27 10:49:46 2014 -0700

    pp.c:pp_lvrefslice: Unused var

M       pp.c

commit f52bea7a91ea0bebcf15ba5b7066b80b19d7533a
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 27 10:49:24 2014 -0700

    \local $a[$ix] assignment

M       pp.c
M       t/op/lvref.t

commit cde8439711a304a9a38e6fe541daf9a88e59cf6d
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Fri Sep 26 10:40:19 2014 -0700

    \@array[@slice] assignment
    
    plus changes to the aelem tests to check rhs context.
    
    I did \local @a[@s] at the same time, since I was practically copying
    and pasting code from aslice (ok, not quite).

M       op.c
M       pp.c
M       t/op/lvref.t

commit 237371ba6b5c5aef73173505cdcd1a1a3294b78a
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Thu Sep 25 22:13:33 2014 -0700

    pp.c: Dodge compiler warning

M       pp.c

commit d246725e3b80ad87a83339d2a6961e8e9fce986a
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Thu Sep 25 22:10:39 2014 -0700

    lvrefslice gets OPpLVAL_INTRO

M       lib/B/Op_private.pm
M       opcode.h
M       regen/op_private

commit 6462d26008875ba7d1a71da84dbef7be27798b54
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Thu Sep 25 22:08:15 2014 -0700

    Add lvrefslice op type

M       ext/Opcode/Opcode.pm
M       opcode.h
M       opnames.h
M       pp.c
M       pp_proto.h
M       regen/opcodes

commit a0ef06fb8bbe460f60becef7987db19a763cff36
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Thu Sep 25 20:34:11 2014 -0700

    Assignment to array elem refs

M       lib/B/Op_private.pm
M       mg.c
M       op.c
M       opcode.h
M       pp.c
M       regen/op_private
M       t/op/lvref.t

commit 8cceb722f82e76abb98a30e4e717e6365e42eade
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Thu Sep 25 16:10:14 2014 -0700

    \local $scalar assignment

M       op.c
M       pp.c
M       t/op/lvref.t

commit 52fa1c7ccebc68027fb6025742911e0744b21cbf
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Thu Sep 25 13:10:22 2014 -0700

    Make \($x,$y) assignment work
    
    This applies to \ with multiple kids (refgen).  Up till now,
    op_lvalue_flags only handled srefgen (single refgen).
    
    Before I was converting srefgen to lvref and nulling the kid op:
    
      srefgen
        ex-list
          rv2sv
            gv
    
    became:
    
      lvref
        ex-list
          ex-rv2sv
            gv
    
    Now I’m converting the kid instead and nulling the srefgen:
    
      ex-srefgen
        ex-list
          lvref
            gv
    
    so that the same code can apply to refgen:
    
      refgen
        ex-list
          pushmark
          rv2sv
            gv
          rv2sv
            gv
    
    becomes
    
      ex-refgen
        ex-list
          ex-pushmark
          lvref
            gv
          lvref
            gv

M       op.c
M       t/op/lvref.t
M       t/op/ref.t

commit b957ad614c7d61b8792b58135dd0eaaf60fb2fb7
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Thu Sep 25 08:19:13 2014 -0700

    List assignment to lexical scalar refs
    
    \($x,$y)=... does not work yet, but \(my $x) and (\$x, \$y) do.

M       lib/B/Op_private.pm
M       mg.c
M       op.c
M       opcode.h
M       pp.c
M       regen/op_private
M       t/op/lvref.t

commit 07ca0bf5ff625065d376226e9b8bfdea402ae658
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Sep 24 22:13:01 2014 -0700

    Fix assertion failure with ... ? \$a : \$b = ...
    
    Because both branches have a srefgen, this was treated as a scalar
    reference assignment, which is usually handled by refassign.  But
    refassign expects the thing on the lhs to be srefgen, not a cond_expr.
    
    The logic for propagating the assignment type must not propagate the
    ‘ASSIGN_REF’ type outward.  Only list context propagates outward.
    Eventually, this will be handled by sassign and the cond_expr will
    have lvref kids.  (It’s too complicated for refassign, which is the
    optimised form that combines \ and = into one op.)
    
    For now, this commit just fixes the assertion failure without making
    this type of assignment work yet.

M       op.c
M       t/op/lvref.t

commit 275c1ed87929ebd9950860af9686a0f65f7722ad
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Sep 24 16:21:03 2014 -0700

    op.c: Apply spair optimisation to \% \@ \&
    
    The ‘spair’ (scalar/single pair) optimisation applies to a few operat-
    ors for which there are actually pairs of ops, one for scalars or sin-
    gle items, the other for lists.  refgen is one of them.
    
    When taking references, hashes, arrays and subroutines are single
    items, just like scalars, so they can go through the ‘single’ code and
    benefit, too.
    
    refassign will also benefit from this, as \@a = [] (not yet imple-
    mented) should provide scalar context to the right-hand side, and this
    avoids the need for special cases (because srefgen with the initial s
    provides scalar context).
    
    (This optimisation could have applied to aggregates passed to cho(m)p,
    but it results in incorrect messages like ‘Uninitialized value in sca-
    lar chomp’ for chomp @_, so I’ve left it for now.)

M       op.c
M       t/lib/warnings/op

commit 17b3edd5d9657d5827d550d623d48f2bc65274e0
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 28 22:50:57 2014 -0700

    Use ‘Can’t modify reference to...’ for refassign, too

M       op.c
M       t/op/lvref.t

commit 25f1032c51c5d0d6f3b7ad6e3971f26516817fc1
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Sep 24 14:22:38 2014 -0700

    op.c: diag_listed_as for ‘Can't modify ref’

M       op.c

commit 13b03b0153bee9b408a5956afd0feb34e1a38c4e
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Sep 24 14:20:48 2014 -0700

    lvref.t: Test ‘Can't modify reference to...’

M       t/op/lvref.t

commit 8669ba3db4315a148760c44da2fa442c00963106
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Sep 24 13:22:49 2014 -0700

    List assignment to package scalar ref
    
    \ on the lhs returns a special magical scalar with set-magic that does
    the aliasing.
    
    I considered having a separate abind op that would be like aassign,
    but different.  However, I realised that for ($x, \$y) = ... to work
    it would have to duplicate all of aassign.  So I went with the sim-
    pler magic implementation.

M       mg.c
M       op.c
M       pp.c
M       t/op/lvref.t

commit ddb0effeb5ad929a99a00d8ecd4e4aab721b5448
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Sep 24 01:45:47 2014 -0700

    Capitalise magic descriptions consistently

M       mg_raw.h
M       mg_vtable.h
M       pod/perlguts.pod
M       regen/mg_vtable.pl

commit 37c710cefab12461c14ec214ce0dfbaf6d6284f9
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Sep 24 01:42:30 2014 -0700

    Add lvref magic type
    
    I just couldn’t resist using the backslash for the character, even
    though I had to tweak mg_vtable.pl to make it work.

M       embed.fnc
M       embed.h
M       mg.c
M       mg_names.c
M       mg_raw.h
M       mg_vtable.h
M       pod/perlguts.pod
M       proto.h
M       regen/mg_vtable.pl

commit d69844703a041eb4a184fe924482b227637215f3
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Sep 24 00:58:23 2014 -0700

    Add lvref op type

M       ext/Opcode/Opcode.pm
M       lib/B/Op_private.pm
M       opcode.h
M       opnames.h
M       pp.c
M       pp_proto.h
M       regen/opcode.pl
M       regen/opcodes

commit 192674c26fef529dd51ce5458b6b7ea45c9019a3
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Sep 24 00:19:33 2014 -0700

    lvref.t: More parenthesized scalar ref tests
    
    These tests are actually nonsensical with the evals, but they currently
    cause syntax errors.  Ultimately they are placeholders and reminders,
    so it doesn’t matter.

M       t/op/lvref.t

commit bfe57aa5c048f4541503c8d967c727846e3bf13f
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Tue Sep 23 22:33:09 2014 -0700

    lvref.t: Some assignments with mixed lhs

M       t/op/lvref.t

commit c46c5229b50dcde369badcd270093a829a528f02
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 21 23:11:32 2014 -0700

    Implement \my $x = ...

M       lib/B/Op_private.pm
M       op.c
M       opcode.h
M       pp.c
M       regen/op_private
M       t/op/lvref.t

commit e0d2741c001dd93a87d11653de8a1fee66e29155
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 21 16:04:23 2014 -0700

    lvref.t: Test \$foo = \*bar

M       t/op/lvref.t

commit 1b07621caedb9de7a73cc15706c1ad866dfb18c4
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 21 15:04:20 2014 -0700

    lvref.t: To-do tests for foreach \

M       t/op/lvref.t

commit 32bdc0b0addb2baacd140db64ae1b5c6d3f11f60
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 21 14:58:15 2014 -0700

    lvret.t: To-do tests for \local $scalar=

M       t/op/lvref.t

commit 7f71a81d3c3c55996150221c3096c2a0974ec4a8
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 21 14:43:37 2014 -0700

    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

M       pp.c
M       t/op/lvref.t

commit 98a6347fda94129e5c8732f9beeef6a72be5ea0e
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 21 14:23:00 2014 -0700

    lvref.t: To-do test for PADSTALE handling

M       t/op/lvref.t

commit 4976506bf460c481ebc2e9ee012602cab24a582b
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 21 13:56:01 2014 -0700

    Simple package scalar lvalue refs
    
    \$::x = ... works, but not \local $x yet.

M       embed.fnc
M       embed.h
M       op.c
M       pp.c
M       proto.h
M       sv.c
M       t/op/lvref.t

commit 350a50ab6f865eecfd67ec64d79c1f6f323b6983
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 21 12:29:30 2014 -0700

    lvref.t: Tests for error massages

M       t/op/lvref.t

commit da4eea989d57de7412682828e0bf6c312d6648d3
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 21 11:19:41 2014 -0700

    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.)

M       t/op/lvref.t

commit 4edb9469ecee544bf5eeeaefb922e1806c2e9d56
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 21 11:16:33 2014 -0700

    lvref.t: To-do tests for closures

M       t/op/lvref.t

commit dd8a28a57636d11247121213112376adcd7ee5ee
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Sep 21 00:22:41 2014 -0700

    Document lvalue ref diagnostics
    
    Also, use ‘a SCALAR reference’ rather than ‘a scalar reference’, to
    match the style used elsewhere.

M       pod/perldiag.pod
M       pp.c

commit f7e83f45d94ad6a0a30dbb60f9d419ced39b0836
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 20 14:49:04 2014 -0700

    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.

M       embed.fnc
M       embed.h
M       op.c
M       opcode.h
M       pp.c
M       proto.h
M       regen/opcodes
M       scope.c

commit 82a311265bd1c3e06412357d0763b38ed6169daa
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 20 23:33:26 2014 -0700

    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.

M       op.c

commit 6c9748f1155bf1bbf2c64d621c648479b3d5a303
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 20 13:48:48 2014 -0700

    Increase $Opcode::VERSION to 1.29

M       ext/Opcode/Opcode.pm

commit 7c617d49fc57cbbb84ce205dbc2b96cbbd96a42f
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 20 13:47:58 2014 -0700

    Add refassign op type

M       ext/Opcode/Opcode.pm
M       lib/B/Op_private.pm
M       opcode.h
M       opnames.h
M       pp.c
M       pp_proto.h
M       regen/opcodes

commit 6a5d8c16d7da4d8b5caadddc709674e1ab07bd37
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 20 13:27:47 2014 -0700

    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).

M       op.c

commit 876cebd167daebb084a81bf49c76966c43e3831d
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 20 11:46:14 2014 -0700

    To-do tests for scalar lvalue refs

M       MANIFEST
A       t/op/lvref.t

commit 96b22ae7d4ca91ed207bdaa1cdff2855003d6f83
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 20 11:16:08 2014 -0700

    Increase $warnings::VERSION to 1.27

M       lib/warnings.pm
M       regen/warnings.pl

commit b68eb770b25ccc12eac97ff64e69c648d2dbcc4d
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 20 11:15:18 2014 -0700

    Add experimental::lvalue_refs warnings category

M       lib/warnings.pm
M       regen/warnings.pl
M       warnings.h

commit cc9acdbf6ccf3c0aa29ac4232e3b0aa1da77dc34
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 20 11:13:58 2014 -0700

    Increase $feature::VERSION to 1.38

M       lib/feature.pm
M       regen/feature.pl

commit d8a43ee1d08d673965b531c0100ac42270342d52
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Sep 20 11:12:37 2014 -0700

    Add lvalue_refs feature feature

M       feature.h
M       lib/feature.pm
M       regen/feature.pl
-----------------------------------------------------------------------

--
Perl5 Master Repository

Reply via email to