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