]> git.vpit.fr Git - perl/modules/Sub-Nary.git/commitdiff
Simplify pp_entersub argument list logic and improve coverage with a test
authorVincent Pit <vince@profvince.com>
Fri, 8 Aug 2008 22:23:56 +0000 (00:23 +0200)
committerVincent Pit <vince@profvince.com>
Fri, 8 Aug 2008 22:23:56 +0000 (00:23 +0200)
lib/Sub/Nary.pm
t/22-call.t

index 838fab0c7cfd79dfa807c6473311439894f7a872..ee5fb6491ca60410c857f3f0d546b35ba0f9a54d 100644 (file)
@@ -353,14 +353,9 @@ sub pp_entersub {
  my $r;
  my $c = 1;
  for (; not null $op->sibling; $op = $op->sibling) {
-  my $n = name($op);
-  next if $n eq 'nextstate';
   my ($rc, $lc) = $self->inspect($op);
-  $r = add $r, scale $c, $rc if defined $rc;
-  if (zero $lc) {
-   $c = 1 - count $r;
-   return $r, $c ? { 0 => $c } : undef
-  }
+  return $rc, $lc if defined $rc and not defined $lc;
+  $r = add $r, scale $c, $rc;
   $c *= count $lc;
  }
 
index 6aa786333a1bebd54980c6a27c63267796510e74..f6fe4e6faa623eff7e13a43674a7cdc43e7461b2 100644 (file)
@@ -3,12 +3,14 @@
 use strict;
 use warnings;
 
-use Test::More tests => 42;
+use Test::More tests => 43;
 
 use Sub::Nary;
 
 my $sn = Sub::Nary->new();
 
+my $x;
+
 sub CORE::GLOBAL::reset {
  return 1, 2, 3
 }
@@ -38,8 +40,9 @@ my @tests = (
  [ sub { do { one, do { two } } },  3 ],
  [ sub { do { lots, do { one } } }, 'list' ],
 
- [ sub { 1, return two, do { 4 } }, 3 ],
- [ sub { two 1, return 2 },         1 ],
+ [ sub { 1, return two, do { 4 } },         3 ],
+ [ sub { two 1, return 2 },                 1 ],
+ [ sub { two 1, do { return 5 if $x; 3 } }, { 1 => 0.5, 2 => 0.5 } ],
 
  [ sub { 1, one(), 2 },   3 ],
  [ sub { 1, one(), @_ },  'list' ],