This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Deparse +sub :attr{} correctly at stmt start
authorFather Chrysostomos <sprout@cpan.org>
Wed, 5 Nov 2014 13:45:30 +0000 (05:45 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Wed, 5 Nov 2014 16:37:14 +0000 (08:37 -0800)
lib/B/Deparse.pm
lib/B/Deparse.t

index 009ed31..adfd9f3 100644 (file)
@@ -1439,7 +1439,9 @@ sub walk_lineseq {
                $i += $kids[$i]->sibling->name eq "unstack" ? 2 : 1);
            next;
        }
-       $expr .= $self->deparse($kids[$i], (@kids != 1)/2);
+       my $expr2 = $self->deparse($kids[$i], (@kids != 1)/2);
+       $expr2 =~ s/^sub :/+sub :/; # statement label otherwise
+       $expr .= $expr2;
        $expr =~ s/;\n?\z//;
        $callback->($expr, $i);
     }
index a206529..cd3b828 100644 (file)
@@ -377,6 +377,10 @@ $test /= 2 if ++$test;
     ;
 }
 ####
+# anonsub attrs at statement start
+my $x = do { +sub : lvalue { my $y; } };
+my $z = do { foo: +sub : method { my $a; } };
+####
 # block with continue
 {
     234;