From 6b6b21da8e7a4aa561c0b61f5a38769acc035b26 Mon Sep 17 00:00:00 2001 From: Father Chrysostomos Date: Wed, 5 Nov 2014 05:45:30 -0800 Subject: [PATCH] Deparse +sub :attr{} correctly at stmt start --- lib/B/Deparse.pm | 4 +++- lib/B/Deparse.t | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/B/Deparse.pm b/lib/B/Deparse.pm index 009ed31..adfd9f3 100644 --- a/lib/B/Deparse.pm +++ b/lib/B/Deparse.pm @@ -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); } diff --git a/lib/B/Deparse.t b/lib/B/Deparse.t index a206529..cd3b828 100644 --- a/lib/B/Deparse.t +++ b/lib/B/Deparse.t @@ -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; -- 1.8.3.1