[perl.git] branch blead, updated. v5.21.4-193-gef32f9b
In perl.git, the branch blead has been updated http://perl5.git.perl.org/perl.git/commitdiff/ef32f9b97b7f6ea1925757be14c852b20c8145c4?hp=f276fdad8f6660f36944c895587a7748585e4969 - Log - commit ef32f9b97b7f6ea1925757be14c852b20c8145c4 Author: Rafael Garcia-Suarez r...@consttype.org Date: Tue Sep 30 01:19:55 2014 +0200 Add tests for empty strings in @ARGV which should be refused, since no file name should be empty. (Suggested by Richard Soderberg) M t/io/argv.t commit 80a96bfc62584b11992aecd2fb33c6f21cfc24b9 Author: Rafael Garcia-Suarez r...@consttype.org Date: Tue Sep 30 00:25:27 2014 +0200 Clarify the documentation for M pod/perlop.pod commit c6f54c1d24664c889a16e7f7d380041a2696f957 Author: Rafael Garcia-Suarez r...@consttype.org Date: Tue Sep 30 00:24:21 2014 +0200 Add tests for $ARGV There weren't apparently any. This also tests that $ARGV behaves correctly both with and . M t/io/argv.t commit 7889afd0b7500393350d5f3dbd5c49b45e3b86d3 Author: Rafael Garcia-Suarez r...@consttype.org Date: Mon Sep 29 22:52:32 2014 +0200 Add tests for the operator M t/io/argv.t commit 1033ba6ee622b4ae14475c6261820c9949ff012f Author: Peter Martini petercmart...@gmail.com Date: Sun Aug 10 23:11:20 2014 -0400 Added some documentation for while() M pod/perlop.pod commit 157fb5a14d10ed16ffc6ebfc43d2637a016fdfce Author: Rafael Garcia-Suarez r...@consttype.org Date: Thu Jul 24 17:43:29 2014 +0200 Introduce the double-diamond operator This operator works like or ARGV, as it reads the list of file names to open from the command-line arguments. However, it disables the magic-open feature (that forks to execute piped commands) : $ bleadperl -e 'while(){print}' 'echo foo |' foo $ bleadperl -e 'while(){print}' 'echo foo |' Can't open echo foo |: No such file or directory at -e line 1. M doio.c M embed.fnc M embed.h M op.c M pp_hot.c M pp_sys.c M proto.h M toke.c --- Summary of changes: doio.c | 9 -- embed.fnc | 2 +- embed.h| 2 +- op.c | 2 +- pod/perlop.pod | 14 -- pp_hot.c | 4 +-- pp_sys.c | 2 +- proto.h| 2 +- t/io/argv.t| 88 ++ toke.c | 15 -- 10 files changed, 120 insertions(+), 20 deletions(-) diff --git a/doio.c b/doio.c index a631eeb..c7aceca 100644 --- a/doio.c +++ b/doio.c @@ -799,7 +799,7 @@ say_false: } PerlIO * -Perl_nextargv(pTHX_ GV *gv) +Perl_nextargv(pTHX_ GV *gv, bool nomagicopen) { IO * const io = GvIOp(gv); @@ -837,7 +837,10 @@ Perl_nextargv(pTHX_ GV *gv) SvSETMAGIC(GvSV(gv)); PL_oldname = SvPVx(GvSV(gv), oldlen); if (LIKELY(!PL_inplace)) { -if (do_open6(gv, PL_oldname, oldlen, NULL, NULL, 0)) { +if (nomagicopen +? do_open6(gv, , 1, NULL, GvSV(gv), 1) +: do_open6(gv, PL_oldname, oldlen, NULL, NULL, 0) + ) { return IoIFP(GvIOp(gv)); } } @@ -1126,7 +1129,7 @@ Perl_do_eof(pTHX_ GV *gv) PerlIO_set_cnt(IoIFP(io),-1); } if (PL_op-op_flags OPf_SPECIAL) { /* not necessarily a real EOF yet? */ - if (gv != PL_argvgv || !nextargv(gv)) /* get another fp handy */ + if (gv != PL_argvgv || !nextargv(gv, FALSE))/* get another fp handy */ return TRUE; } else diff --git a/embed.fnc b/embed.fnc index 5fa38e8..5de2f83 100644 --- a/embed.fnc +++ b/embed.fnc @@ -1056,7 +1056,7 @@ Apd |SV*|vnormal|NN SV *vs Apd|SV*|vstringify |NN SV *vs Apd|int|vcmp |NN SV *lhv|NN SV *rhv : Used in pp_hot.c and pp_sys.c -p |PerlIO*|nextargv |NN GV* gv +p |PerlIO*|nextargv |NN GV* gv|bool nomagicopen AnpP |char* |ninstr |NN const char* big|NN const char* bigend \ |NN const char* little|NN const char* lend Apd|void |op_free|NULLOK OP* arg diff --git a/embed.h b/embed.h index 1fe7076..ed04c7c 100644 --- a/embed.h +++ b/embed.h @@ -1248,7 +1248,7 @@ #define newSTUB(a,b) Perl_newSTUB(aTHX_ a,b) #define newSVavdefelem(a,b,c) Perl_newSVavdefelem(aTHX_ a,b,c) #define newXS_len_flags(a,b,c,d,e,f,g) Perl_newXS_len_flags(aTHX_ a,b,c,d,e,f,g) -#define nextargv(a)Perl_nextargv(aTHX_ a) +#define nextargv(a,b) Perl_nextargv(aTHX_ a,b) #define oopsAV(a) Perl_oopsAV(aTHX_ a) #define oopsHV(a) Perl_oopsHV(aTHX_ a) #define op_const_sv(a,b) Perl_op_const_sv(aTHX_ a,b) diff --git a/op.c b/op.c index d0b6173..08e6028 100644 ---
[perl.git] branch blead, updated. v5.21.4-194-gad77c20
In perl.git, the branch blead has been updated http://perl5.git.perl.org/perl.git/commitdiff/ad77c200c8a4ed39fda83b8a740ef81ede885d84?hp=ef32f9b97b7f6ea1925757be14c852b20c8145c4 - Log - commit ad77c200c8a4ed39fda83b8a740ef81ede885d84 Author: Rafael Garcia-Suarez r...@consttype.org Date: Tue Sep 30 15:36:10 2014 +0200 Add a test for failing on the second file --- Summary of changes: t/io/argv.t | 9 - 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/t/io/argv.t b/t/io/argv.t index b3825bb..58e1d66 100644 --- a/t/io/argv.t +++ b/t/io/argv.t @@ -7,7 +7,7 @@ BEGIN { BEGIN { require ./test.pl; } -plan(tests = 34); +plan(tests = 35); my ($devnull, $no_devnull); @@ -208,6 +208,13 @@ SKIP: { args = [ 'echo foo |' ], ); is($x, Can't open echo foo |: No such file or directory at -e line 1.\n, ' does not treat ...| as fork'); + +$x = runperl( +prog = 'while () { }', +stderr = 1, +args = [ 'Io_argv1.tmp', 'echo foo |' ], +); +is($x, Can't open echo foo |: No such file or directory at -e line 1, line 2.\n, ' does not treat ...| as fork after eof'); } # This used to dump core -- Perl5 Master Repository
[perl.git] branch blead, updated. v5.21.4-195-g7f2ab31
In perl.git, the branch blead has been updated http://perl5.git.perl.org/perl.git/commitdiff/7f2ab31fa3d20727b229092cc401b4b48fdee66d?hp=ad77c200c8a4ed39fda83b8a740ef81ede885d84 - Log - commit 7f2ab31fa3d20727b229092cc401b4b48fdee66d Author: Rafael Garcia-Suarez r...@consttype.org Date: Tue Sep 30 15:44:44 2014 +0200 Forgot to update SKIP count after last patch --- Summary of changes: t/io/argv.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/io/argv.t b/t/io/argv.t index 58e1d66..397bb71 100644 --- a/t/io/argv.t +++ b/t/io/argv.t @@ -200,7 +200,7 @@ is($x, Can't open -: No such file or directory at -e line 1.\n, ' does not } SKIP: { -skip('no echo', 1) unless -x '/bin/echo'; +skip('no echo', 2) unless -x '/bin/echo'; $x = runperl( prog = 'while () { print $_; }', -- Perl5 Master Repository
[perl.git] branch smoke-me/davem/cybers_methop_stuff2, created. v5.21.4-198-g6eba13c
In perl.git, the branch smoke-me/davem/cybers_methop_stuff2 has been created http://perl5.git.perl.org/perl.git/commitdiff/6eba13c8212ac47e860c34dec3463111fe2c2790?hp= at 6eba13c8212ac47e860c34dec3463111fe2c2790 (commit) - Log - commit 6eba13c8212ac47e860c34dec3463111fe2c2790 Author: David Mitchell da...@iabyn.com Date: Wed Sep 17 20:26:31 2014 +0100 fix B::METHOP::first, B::METHOP::meth_sv for METHOPs, op_first and op_meth_sv are in a union, so only one can be valid a time. Decide which based on op type. Previously it was interpreting an SV pointer as an OP pointer and vice versa. Also, remove some vestigal code from Concise.pm that handled method_named, in a branch no longer called for method ops M ext/B/B.xs M ext/B/B/Concise.pm commit 2ba663482ba002eee231e4acf94f56fbe09cf947 Author: David Mitchell da...@iabyn.com Date: Mon Sep 15 14:17:43 2014 +0100 fixups to adding METHOP: * the new regen/op_private needed to be told about the new op; * an op.c assert needed to be told the METHOPs can have a child. * remove trailing whitespace in the new S_newMETHOP_internal() function * add a comment about alignment of methop.op_u.op_first and op_meth_sv M ext/B/B/Concise.pm M lib/B/Op_private.pm M op.c M op.h M opcode.h M regen/op_private commit 759c90ecd64e768793caeb08d48dad07402844b8 Author: syber sy...@crazypanda.ru Date: Sat Sep 6 02:59:42 2014 +0400 Add new METHOP class for OP_METHOD* ops Change op structure for OP_METHOD and OP_METHOD_NAMED from UNOP/SVOP to METHOP. METHOP is a new structure for method ops, which holds class/method related info needed at runtime to improve perfomance of class/object method calls. Nothing changed in functionality and/or perfomance by this commit. It just introduces new structure which will be extended with extra fields and used in next commits. Added METHOP constructors: - newMETHOP() for method ops with dynamic method names. The only optype for this op is OP_METHOD. - newMETHOP_named() for method ops with constant method names. Optypes for this op are: OP_METHOD_NAMED (currently) and (later) OP_METHOD_SUPER, OP_METHOD_REDIR, OP_METHOD_NEXT, OP_METHOD_NEXTCAN, OP_METHOD_MAYBENEXT Changed perly.y, op.c and others to use METHOP instead of UNOP/SVOP Changed opcodes, B.xs, B::Concise, B::Deparse, B::Deparse's tests, docs New op class character is '.' Conflicts: ext/B/t/optree_specials.t M dump.c M ext/B/B.pm M ext/B/B.xs M ext/B/B/Concise.pm M ext/B/t/optree_specials.t M lib/B/Deparse.pm M op.c M op.h M opcode.h M perl.c M regen/opcode.pl M regen/opcodes commit ba1440a8cf62ff927a7c9c52724a2a4d56f089fa Author: syber sy...@crazypanda.ru Date: Thu Sep 4 22:08:59 2014 +0400 Change op structure for OP_METHOD and OP_METHOD_NAMED from UNOP/SVOP to METHOP. METHOP is a new structure for method ops, which holds class/method related info needed at runtime to improve perfomance of class/object method calls. Nothing changed in functionality and/or perfomance by this commit. It just introduces new structure which will be extended with extra fields and used in next commits. METHOP is binary compatible with both UNOP and SVOP, so that things like B::Deparse and so on remain working. Added METHOP constructors: - newMETHOP() for method ops with dynamic method names. The only optype for this op is OP_METHOD. - newMETHOP_named() for method ops with constant method names. Optypes for this op are: OP_METHOD_NAMED (currently) and (later) OP_METHOD_SUPER, OP_METHOD_REDIR, OP_METHOD_NEXT, OP_METHOD_NEXTCAN, OP_METHOD_MAYBENEXT Changed perly.y, op.c and others to use METHOP instead of UNOP/SVOP M embed.fnc M embed.h M op.c M op.h M perl.c M perl.h M perly.act M perly.h M perly.tab M perly.y M pp_hot.c M proto.h --- -- Perl5 Master Repository
[perl.git] branch smoke-me/davem/cybers_methop_stuff, deleted. v5.21.3-757-g4211760
In perl.git, the branch smoke-me/davem/cybers_methop_stuff has been deleted http://perl5.git.perl.org/perl.git/commitdiff/?hp=4211760d07a548454a39edadb6da877e0de4be18 was 4211760d07a548454a39edadb6da877e0de4be18 --- 4211760d07a548454a39edadb6da877e0de4be18 fix B::METHOP::first, B::METHOP::meth_sv --- -- Perl5 Master Repository
[perl.git] branch blead, updated. v5.21.4-196-g54db7d5
In perl.git, the branch blead has been updated http://perl5.git.perl.org/perl.git/commitdiff/54db7d57c29c9259228a6a4176caa32e391c6d0b?hp=7f2ab31fa3d20727b229092cc401b4b48fdee66d - Log - commit 54db7d57c29c9259228a6a4176caa32e391c6d0b Author: Chris 'BinGOs' Williams ch...@bingosnet.co.uk Date: Tue Sep 30 19:15:05 2014 +0100 Upstream a patch from pkgsrc for NetBSD hints --- Summary of changes: hints/netbsd.sh | 16 +++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/hints/netbsd.sh b/hints/netbsd.sh index 17a4ff6..6f0dd74 100644 --- a/hints/netbsd.sh +++ b/hints/netbsd.sh @@ -89,7 +89,9 @@ case $osvers in ;; esac case $osvers in -0.9*|1.*|2.*|3.*|4.*|5.*|6.*) +0.8*) + ;; +*) d_getprotoent_r=$undef d_getprotobyname_r=$undef d_getprotobynumber_r=$undef @@ -100,6 +102,12 @@ case $osvers in d_getservbyport_r=$undef d_setservent_r=$undef d_endservent_r=$undef + d_gethostbyname_r=$undef + d_gethostbyaddr2_r=$undef + d_gethostbyaddr_r=$undef + d_sethostent_r=$undef + d_gethostent_r=$undef + d_endhostent_r=$undef d_getprotoent_r_proto=0 d_getprotobyname_r_proto=0 d_getprotobynumber_r_proto=0 @@ -110,6 +118,12 @@ case $osvers in d_getservbyport_r_proto=0 d_setservent_r_proto=0 d_endservent_r_proto=0 + d_gethostbyname_r_proto=0 + d_gethostbyaddr2_r_proto=0 + d_gethostbyaddr_r_proto=0 + d_sethostent_r_proto=0 + d_endhostent_r_proto=0 + d_gethostent_r_proto=0 ;; esac -- Perl5 Master Repository
[perl.git] branch tonyc/hurdsocket, created. v5.21.4-104-g7ba92a8
In perl.git, the branch tonyc/hurdsocket has been created http://perl5.git.perl.org/perl.git/commitdiff/7ba92a8dfd1ba355c94f8366f33e9c7d5c465bc8?hp= at 7ba92a8dfd1ba355c94f8366f33e9c7d5c465bc8 (commit) - Log - commit 7ba92a8dfd1ba355c94f8366f33e9c7d5c465bc8 Author: Tony Cook t...@hurd.tony.develop-help.com Date: Wed Oct 1 10:57:02 2014 + [perl #122657] TODO checking the result of recv() on hurd M t/io/socket.t commit bc931c7e21fac16dcfd06e69225426b427b7f143 Author: Leon Timmermans faw...@gmail.com Date: Wed Sep 24 23:17:21 2014 +0200 Compare recv return value to peername in socket test M t/io/socket.t --- -- Perl5 Master Repository
[perl.git] branch maint-5.18, updated. v5.18.3-RC2-1-g350ccf2
In perl.git, the branch maint-5.18 has been updated http://perl5.git.perl.org/perl.git/commitdiff/350ccf28930846794f374639effece589fe4d2dd?hp=45c9c508b80c2c5e8175b923f5586ebae8256cc4 - Log - commit 350ccf28930846794f374639effece589fe4d2dd Author: Ricardo Signes r...@cpan.org Date: Tue Sep 30 21:37:24 2014 -0400 perlhist: import the latest perlhist dates --- Summary of changes: pod/perlhist.pod | 24 1 file changed, 24 insertions(+) diff --git a/pod/perlhist.pod b/pod/perlhist.pod index 63cdc3f..edb0ac5 100644 --- a/pod/perlhist.pod +++ b/pod/perlhist.pod @@ -513,10 +513,34 @@ the strings?). Ricardo 5.18.1-RC32013-Aug-08 Ricardo 5.18.12013-Aug-12 Ricardo 5.18.22014-Jan-06 + Ricardo 5.18.3-RC12014-Sep-17 + Ricardo 5.18.3-RC22014-Sep-27 + Ricardo 5.18.32014-Oct-01 Ricardo 5.19.0 2013-May-20 The 5.19 development track David G 5.19.1 2013-Jun-21 Aristotle 5.19.2 2013-Jul-22 + Steve 5.19.3 2013-Aug-20 + Steve 5.19.4 2013-Sep-20 + Steve 5.19.5 2013-Oct-20 + BinGOs5.19.6 2013-Nov-20 + Abigail 5.19.7 2013-Dec-20 + Ricardo 5.19.8 2014-Jan-20 + TonyC 5.19.9 2014-Feb-20 + Aaron 5.19.10 2014-Mar-20 + Steve 5.19.11 2014-Apr-20 + + Ricardo 5.20.0-RC1 2014-May-16 The 5.20 maintenance track + Ricardo 5.20.0 2014-May-27 + Steve 5.20.1-RC1 2014-Aug-25 + Steve 5.20.1-RC2 2014-Sep-07 + Steve 5.20.1 2014-Sep-14 + + Ricardo 5.21.0 2014-May-27 The 5.21 development track + Matthew H 5.21.1 2014-Jun-20 + Abigail 5.21.2 2014-Jul-20 + Peter 5.21.3 2014-Aug-20 + Steve 5.21.4 2014-Sep-20 =head2 SELECTED RELEASE SIZES -- Perl5 Master Repository
[perl.git] branch sprout/lvref, deleted. v5.21.4-161-gbd4af63
In perl.git, the branch sprout/lvref has been deleted http://perl5.git.perl.org/perl.git/commitdiff/?hp=bd4af6377ff145719fd77053afa2ca332b580757 was bd4af6377ff145719fd77053afa2ca332b580757 --- bd4af6377ff145719fd77053afa2ca332b580757 Add lvavref op type --- -- Perl5 Master Repository
[perl.git] branch sprout/lvref, created. v5.21.4-166-g24941bc
In perl.git, the branch sprout/lvref has been created http://perl5.git.perl.org/perl.git/commitdiff/24941bc71e844e960039c36241f1f77b2039ea3e?hp= at 24941bc71e844e960039c36241f1f77b2039ea3e (commit) - Log - commit 24941bc71e844e960039c36241f1f77b2039ea3e 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 439e83fef5ce5782c20ffc77ed329f0166869e80 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 e6fd2056f75b5b5d1a9b569c8456d860327ad567 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 15106c58a8ea7009698db2ea875198fd3ff6eaf8 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 regen/opcodes M t/op/lvref.t commit 01349e96ee2bb5bfba8b670b719c5b87723f8e84 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 85562288c899242c649cd8dcd9efdf8281eb0c29 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 commit ae6421cdf367f9c2fafb0eb0e97756241fc2b8ad 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 943b2d0132c0b89597c2adfdb6d7529631185e55 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 7271a154ee978f38eb06024908b03187b467e6b9 Author: Father Chrysostomos spr...@cpan.org Date: Mon Sep 29 16:10:44 2014 -0700 Fix up Peek.t for magic flag renumbering M ext/Devel-Peek/t/Peek.t commit d5d3bb2009804d743ce200897e92767e3910053d Author: Father Chrysostomos spr...@cpan.org Date: Mon Sep 29 15:48:24 2014 -0700 Renumber OPpLVREF_TYPE so it can be copied to mg_flags without conflicting with the generic magic flags. The previous commit made room in mg_flags for this. M lib/B/Op_private.pm M mg.h M opcode.h M regen/op_private commit 15d3b936565328f42cd066119b8ec8eedbeb968e Author: Father Chrysostomos spr...@cpan.org Date: Mon Sep 29
[perl.git] branch sprout/lvref, created. v5.21.4-167-g0d574f3
In perl.git, the branch sprout/lvref has been created http://perl5.git.perl.org/perl.git/commitdiff/0d574f331368ea0ba0597f29e8f49f4411351c48?hp= at 0d574f331368ea0ba0597f29e8f49f4411351c48 (commit) - Log - commit 0d574f331368ea0ba0597f29e8f49f4411351c48 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 67e0b2a690c5c2c14385c8a7e3aa3783f3b3154e 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 439e83fef5ce5782c20ffc77ed329f0166869e80 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 e6fd2056f75b5b5d1a9b569c8456d860327ad567 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 15106c58a8ea7009698db2ea875198fd3ff6eaf8 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 regen/opcodes M t/op/lvref.t commit 01349e96ee2bb5bfba8b670b719c5b87723f8e84 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 85562288c899242c649cd8dcd9efdf8281eb0c29 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 commit ae6421cdf367f9c2fafb0eb0e97756241fc2b8ad 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 943b2d0132c0b89597c2adfdb6d7529631185e55 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 7271a154ee978f38eb06024908b03187b467e6b9 Author: Father Chrysostomos spr...@cpan.org Date: Mon Sep 29 16:10:44 2014 -0700 Fix up Peek.t for magic flag renumbering M ext/Devel-Peek/t/Peek.t commit d5d3bb2009804d743ce200897e92767e3910053d Author: Father Chrysostomos spr...@cpan.org Date: Mon Sep 29 15:48:24 2014 -0700 Renumber OPpLVREF_TYPE so it can be copied to mg_flags without conflicting with
[perl.git] branch sprout/lvref, deleted. v5.21.4-166-g24941bc
In perl.git, the branch sprout/lvref has been deleted http://perl5.git.perl.org/perl.git/commitdiff/?hp=24941bc71e844e960039c36241f1f77b2039ea3e was 24941bc71e844e960039c36241f1f77b2039ea3e --- 24941bc71e844e960039c36241f1f77b2039ea3e Make \( ?: ) assignment work --- -- Perl5 Master Repository