In perl.git, the branch smoke-me/rjbs/postderef has been created

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

        at  d097b140367de9e8e0a3bad7836cff6b05f66910 (commit)

- Log -----------------------------------------------------------------
commit d097b140367de9e8e0a3bad7836cff6b05f66910
Author: Ricardo Signes <[email protected]>
Date:   Wed Oct 2 12:08:49 2013 -0400

    new warnings category, so bump warnings.pm

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

commit 8e44fe781fe2707f4e4d869acb88f0e2f85c57fb
Author: Ricardo Signes <[email protected]>
Date:   Thu Sep 26 22:44:00 2013 -0400

    preliminary postfix dereference docs
    
    This commit adds an overview of the feature to perlref and a pointer
    to the section in perlref to perlop's documentation of the arrow.
    
    If/when this feature becomes non-experimental, the documentation
    should be merged upward into Using References.
    
    This documentation was written against a previous state of the
    branch.  Is should be fact-checked before any merge.

M       pod/perlop.pod
M       pod/perlref.pod

commit 4838d604fcf57225f04fd81cca70d19ab9dc905f
Author: Father Chrysostomos <[email protected]>
Date:   Mon Sep 16 12:49:12 2013 -0700

    Fix a bug with ->@ inside "@{...}"
    
    When encountering ->@[ or ->@{, we should only record that we are
    going to need a POSTJOIN at the top level of interpolation, not
    inside any brackets.  Otherwise the ->@[ can interfere with an outer
    "@{...}", causing syntax errors.

M       t/op/postfixderef.t
M       toke.c

commit b92c537dea43e444f575459f21f656caa1a78dd1
Author: Father Chrysostomos <[email protected]>
Date:   Mon Sep 16 09:57:13 2013 -0700

    Make postderef experimental

M       lib/warnings.pm
M       pod/perldiag.pod
M       pod/perllexwarn.pod
M       regen/warnings.pl
M       t/lib/warnings/toke
M       t/op/postfixderef.t
M       toke.c
M       warnings.h

commit 387a716f621cef4c3b32f242c0b4a70dae791e44
Author: Father Chrysostomos <[email protected]>
Date:   Mon Sep 16 09:44:34 2013 -0700

    Allow ->@ ->$ interpolation under postderef_qq feature
    
    This turned out to be tricky.  Normally @ at the beginning of the
    interpolated code signals to the lexer to emit ‘join($",’ immediately.
    With "$_->@*" we would have to retract the $ _ -> tokens upon encoun-
    tering @*, which we obviously cannot do.
    
    Waiting until we reach the end of the interpolated text before emit-
    ting anything could not work either, as it may contain BEGIN blocks
    that affect the way part of the interpolated code is parsed.
    
    So what we do is introduce an egregious or clever hack, depending on
    how you look at it.
    
    Normally, the lexer turns "@foo" into:
    
        stringify ( join ( $ " , @ foo ) )
    
    (The " is a WORD token, representing a variable name.)
    
    "$_" becomes:
    
        stringify ( $ _ )
    
    We can turn "$_->@*" into:
    
        stringify ( $ _ -> @ * POSTJOIN )
    
    Where POSTJOIN is a new lexer token with special handling that creates
    a join op just the way join($", ...) does.
    
    To make "foo$_->@*bar" work as well, we have to make POSTJOIN have
    precedence just below ->, so that
    
        stringify ( "foo" . $ _ -> @ * POSTJOIN . "bar" )
    
    (what the parser sees) is equivalent to:
    
        stringify ( "foo" . ( $ _ -> @ * POSTJOIN ) . "bar" )

M       parser.h
M       perly.act
M       perly.h
M       perly.tab
M       perly.y
M       t/op/postfixderef.t
M       toke.c

commit 1f4de712443ebb872387aa9261236d541ecddb6a
Author: Father Chrysostomos <[email protected]>
Date:   Sun Sep 15 16:31:19 2013 -0700

    Add postderef_qq feature feature

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

commit cd16ab5b689d7c0d5db175535c641da01a4cfbbe
Author: Father Chrysostomos <[email protected]>
Date:   Sun Sep 15 16:29:21 2013 -0700

    Hide postderef behind the feature feature

M       t/op/postfixderef.t
M       toke.c

commit 78f4b177ed9977f3cc4cbb1278182bcf12fbe393
Author: Father Chrysostomos <[email protected]>
Date:   Sun Sep 15 16:22:41 2013 -0700

    toke.c:postderef: rmv obsolete comment

M       toke.c

commit 2482a19b1b25edc6ef8006bd6dcc8e4bf46f9a2b
Author: Father Chrysostomos <[email protected]>
Date:   Sun Sep 15 16:21:54 2013 -0700

    Increase $feature::VERSION to 1.34

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

commit 5a12e512100136e1bfe6c214f1290d8ec5a8ac2a
Author: Father Chrysostomos <[email protected]>
Date:   Sun Sep 15 16:20:58 2013 -0700

    Add postderef feature feature

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

commit be925ffbeda67cdc6067844e0ed4ddd4efc0e9ca
Author: Father Chrysostomos <[email protected]>
Date:   Sun Sep 15 16:07:11 2013 -0700

    ->%{ ->%[

M       perly.act
M       perly.h
M       perly.tab
M       perly.y
M       t/op/postfixderef.t

commit 4cbd9b42864f067e2307cee432858e521b350f54
Author: Father Chrysostomos <[email protected]>
Date:   Tue Aug 13 18:12:58 2013 -0700

    Fix up postfixderef.t

M       t/op/postfixderef.t

commit fbc1f2d0343cc6b0c1a6d00c6f3e2bff9dbb5d72
Author: Father Chrysostomos <[email protected]>
Date:   Tue Aug 13 14:22:20 2013 -0700

    Add postfixderef.t to MANIFEST

M       MANIFEST

commit d85aa44eb6934ba1fd0793b407846bbf516a543b
Author: David Nicol <[email protected]>
Date:   Tue Aug 13 14:22:04 2013 -0700

    Tests for postfix dereference

A       t/op/postfixderef.t

commit ca970c1f66ec4177ff2a60c0260f0013ae3d5257
Author: Father Chrysostomos <[email protected]>
Date:   Fri Jul 5 01:10:08 2013 -0700

    Postfix dereference syntax
    
    $_->$* means $$_ (and compiled down to the same op tree)
    $_->@* means @$_ ( ditto ditto blah blah blah          )
    $_->%* means %$_ (...)
    $_->&* means &$_
    $_->** means *$_
    $_->@[...] means @$_[...]
    $_->@{...} means @$_{...}
    $_->*{...} means *$_{...}
    
    $_->@* is not always equivalent to @$_, particularly in contexts like
    @foo[0], which cannot be written foo->@*[0].  (Just omit the asterisk
    and it works.)

M       perl.h
M       perly.act
M       perly.h
M       perly.tab
M       perly.y
M       toke.c
-----------------------------------------------------------------------

--
Perl5 Master Repository

Reply via email to