summaryrefslogtreecommitdiff
path: root/dist
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2011-12-07 12:41:56 -0800
committerFather Chrysostomos <sprout@cpan.org>2011-12-08 06:18:08 -0800
commit94bb57f91b6d1f334c87639d4c49de66eeddb3a7 (patch)
tree2cd1c3a6ba2719228eac41554c2c5d3ec5e89814 /dist
parentaf6a5d0ea1e02579009f9da9fc6444bbb2eb691d (diff)
downloadperl-94bb57f91b6d1f334c87639d4c49de66eeddb3a7.tar.gz
[perl #47361] Deparse do +{} and do({}) correctly
These are both variants of do-file syntax.
Diffstat (limited to 'dist')
-rw-r--r--dist/B-Deparse/Deparse.pm6
-rw-r--r--dist/B-Deparse/t/deparse.t7
2 files changed, 12 insertions, 1 deletions
diff --git a/dist/B-Deparse/Deparse.pm b/dist/B-Deparse/Deparse.pm
index 8aecf88dd4..8bf5756a72 100644
--- a/dist/B-Deparse/Deparse.pm
+++ b/dist/B-Deparse/Deparse.pm
@@ -1762,7 +1762,11 @@ sub pp_gmtime { unop(@_, "gmtime") }
sub pp_alarm { unop(@_, "alarm") }
sub pp_sleep { maybe_targmy(@_, \&unop, "sleep") }
-sub pp_dofile { unop(@_, "do") }
+sub pp_dofile {
+ my $code = unop(@_, "do");
+ if ($code =~ s/^do \{/do({/) { $code .= ')' }
+ $code;
+}
sub pp_entereval {
unop(
@_,
diff --git a/dist/B-Deparse/t/deparse.t b/dist/B-Deparse/t/deparse.t
index a81c86e391..492c69150c 100644
--- a/dist/B-Deparse/t/deparse.t
+++ b/dist/B-Deparse/t/deparse.t
@@ -828,3 +828,10 @@ BEGIN { $^H{'a'} = 'b'; }
print $_;
}
print $_;
+####
+# [perl #47361] do({}) and do +{} (variants of do-file)
+do({});
+do +{};
+>>>>
+do({});
+do({});