]> git.vpit.fr Git - perl/modules/Sub-Nary.git/commitdiff
Allow returning from a scalar assignment
authorVincent Pit <vince@profvince.com>
Sat, 9 Aug 2008 10:24:31 +0000 (12:24 +0200)
committerVincent Pit <vince@profvince.com>
Sat, 9 Aug 2008 10:24:31 +0000 (12:24 +0200)
lib/Sub/Nary.pm
t/20-return.t

index b87eaefc48736e2256b048e67517b94ce313700b..2b9b6719ebbf6c79fef5f7370e0da270166a2a43 100644 (file)
@@ -448,6 +448,15 @@ sub pp_rv2av {
  $self->inspect($op);
 }
 
+sub pp_sassign {
+ my ($self, $op) = @_;
+
+ my $r = ($self->inspect($op->first))[0];
+
+ my $c = 1 - count $r;
+ return $r, $c ? { 1 => $c } : undef
+}
+
 sub pp_aassign {
  my ($self, $op) = @_;
 
index d14a3a55c3ff4d741b758883f046aba4629ce612..fe5d21bf91b4241b4539f9bcfd6f8df37855fd27 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 67;
+use Test::More tests => 68;
 
 use Sub::Nary;
 
@@ -27,6 +27,7 @@ my @tests = (
  [ sub { do { do { return if $x }, 3 }, 4 },   { 0 => 0.5, 3 => 0.5 } ],
  [ sub { do { return if $x; 2, 3 }, do { return 1 if $y; 4, 5, 6 } },
                                            { 0 => 0.5, 1 => 0.25, 5 => 0.25 } ],
+ [ sub { my $x = do { return 2, 3; 4 } },      2 ],
 
  [ sub { return $x },     1 ],
  [ sub { return $x, $y }, 2 ],