]> git.vpit.fr Git - perl/modules/B-RecDeparse.git/commitdiff
Don't recurse into empty subroutines
authorVincent Pit <vince@profvince.com>
Sun, 27 Feb 2011 20:36:38 +0000 (21:36 +0100)
committerVincent Pit <vince@profvince.com>
Sun, 27 Feb 2011 20:36:38 +0000 (21:36 +0100)
lib/B/RecDeparse.pm
t/17-calls.t

index fbce8700d76d5cefea53138d5862907bab295040..f2b3660b4a881e6eceb6ab74b858127f079d4e69 100644 (file)
@@ -187,7 +187,8 @@ sub pp_gv {
  my $seen = $self->{brd_seen};
 
  my $body;
- if (!$self->{brd_sub} or !$self->_recurse or $seen->{$name} or !$$cv) {
+ if (!$self->{brd_sub} or !$self->_recurse or $seen->{$name} or !$$cv
+     or !$cv->isa('B::CV') or $cv->ROOT->isa('B::NULL')) {
   $body = $self->SUPER::pp_gv(@_);
  } else {
   $body = do {
index 76e8a3cb2c6457f18dc39a9c52888c5339d09390..99f5e4f80d14a0c294440128736040fc47b5f44a 100644 (file)
@@ -3,13 +3,14 @@
 use strict;
 use warnings;
 
-use Test::More tests => 2 * 4 * 6;
+use Test::More tests => 2 * 4 * 7;
 
 use B::RecDeparse;
 
 my $brd = B::RecDeparse->new(level => -1);
 
 sub foo { 123 }
+sub baz;
 my $pkg;
 my $coderef;
 
@@ -24,6 +25,11 @@ my @tests = (
  [ x3 => 'bar(@_)',    'bar' ],
  [ x4 => 'bar(shift)', 'bar' ],
 
+ [ d1 => 'baz()',      'baz' ],
+ [ d2 => 'baz(1)',     'baz' ],
+ [ d3 => 'baz(@_)',    'baz' ],
+ [ d4 => 'baz(shift)', 'baz' ],
+
  [ c1 => '$coderef->()',      'coderef' ],
  [ c2 => '$coderef->(1)',     'coderef' ],
  [ c3 => '$coderef->(@_)',    'coderef' ],