]> git.vpit.fr Git - perl/modules/Sub-Nary.git/commitdiff
Add support and tests for eval { }
authorVincent Pit <vince@profvince.com>
Mon, 4 Aug 2008 21:56:55 +0000 (23:56 +0200)
committerVincent Pit <vince@profvince.com>
Mon, 4 Aug 2008 21:56:55 +0000 (23:56 +0200)
lib/Sub/Nary.pm
t/20-return.t
t/21-list.t

index f2b53439d92c0bf7fbff1398c0ab7651dc4eaf38..c44a10e9bf8fb6d73541a8cbb48829b396192403 100644 (file)
@@ -279,7 +279,7 @@ sub expect_any {
 
  return ($self->expect_list($op))[0] => 1 if name($op) eq 'return';
 
- if (class($op) eq 'LOGOP') {
+ if (class($op) eq 'LOGOP' and not null $op->first) {
   my @res;
   my ($p, $r);
 
index ac62ce5edf02999460cbae749313c8256b53c459..a3eeed6cc07ca6cbe920f385d0d9053b97756ee5 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 40;
+use Test::More tests => 47;
 
 use Sub::Nary;
 
@@ -60,6 +60,14 @@ my @tests = (
  [ sub { while (1) { return 1, 2 } },       2 ],
  [ sub { while (1) { last; return 1, 2 } }, 2 ],
  [ sub { return 1, 2 while 1 },             2 ],
+
+ [ sub { eval { return } },                         0 ],
+ [ sub { eval { return 1, 2 } },                    2 ],
+ [ sub { eval { }; return $x, 2 },                  2 ],
+ [ sub { return eval { 1, $x }; },                  2 ],
+ [ sub { return 1, eval { $x, eval { $h{foo} } } }, 3 ],
+ [ sub { return eval { return $x, eval { $y } } },  2 ],
+ [ sub { return eval { do { eval { @a } } } },      'list' ],
 );
 
 my $i = 1;
index 71edefbdefb21cdf8c74049df2632aefda69e75f..e5bbc40566d25af847940f456266180c4705dc3a 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 28;
+use Test::More tests => 33;
 
 use Sub::Nary;
 
@@ -50,6 +50,12 @@ my @tests = (
 
  [ sub { while (1) { } },         0 ],
  [ sub { while (1) { 1; } 1, 2 }, 2 ],
+
+ [ sub { eval { } },                          0 ],
+ [ sub { eval { 1, 2 } },                     2 ],
+ [ sub { eval { }; $x, 2 },                   2 ],
+ [ sub { 1, eval { $x, eval { $h{foo} } } },  3 ],
+ [ sub { eval { 1, do { eval { @a }, 2 } } }, 'list' ],
 );
 
 my $i = 1;