[perl.git] branch blead, updated. v5.21.4-193-gef32f9b

2014-09-30 Thread Rafael Garcia-Suarez
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

2014-09-30 Thread Rafael Garcia-Suarez
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

2014-09-30 Thread Rafael Garcia-Suarez
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

2014-09-30 Thread Dave Mitchell
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

2014-09-30 Thread Dave Mitchell
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

2014-09-30 Thread Chris 'Bingos' Williams
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

2014-09-30 Thread Tony Cook
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

2014-09-30 Thread Ricardo Signes
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

2014-09-30 Thread Father Chrysostomos
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

2014-09-30 Thread Father Chrysostomos
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

2014-09-30 Thread Father Chrysostomos
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

2014-09-30 Thread Father Chrysostomos
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