Deparse CORE::do+{} and CORE::do({}) correctly
authorFather Chrysostomos <sprout@cpan.org>
Thu, 8 Dec 2011 14:24:53 +0000 (06:24 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Thu, 8 Dec 2011 14:24:53 +0000 (06:24 -0800)
Commit 94bb57f91b missed the CORE:: variant.

dist/B-Deparse/Deparse.pm
dist/B-Deparse/t/deparse.t

index c3ac5fa..2ca91f6 100644 (file)
@@ -1770,7 +1770,7 @@ sub pp_sleep { maybe_targmy(@_, \&unop, "sleep") }
 
 sub pp_dofile {
     my $code = unop(@_, "do", 1); # llafr does not apply
-    if ($code =~ s/^do \{/do({/) { $code .= ')' }
+    if ($code =~ s/^((?:CORE::)?do) \{/$1({/) { $code .= ')' }
     $code;
 }
 sub pp_entereval {
index 056c9cf..de7b764 100644 (file)
@@ -837,9 +837,16 @@ print $_;
 # [perl #47361] do({}) and do +{} (variants of do-file)
 do({});
 do +{};
+sub foo::do {}
+package foo;
+CORE::do({});
+CORE::do +{};
 >>>>
 do({});
 do({});
+package foo;
+CORE::do({});
+CORE::do({});
 ####
 # [perl #77096] functions that do not follow the llafr
 () = (return 1) + time;