This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix deparsing of glob(my $x) and CORE::glob
authorFather Chrysostomos <sprout@cpan.org>
Sun, 10 Nov 2013 05:15:32 +0000 (21:15 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Sun, 10 Nov 2013 06:07:34 +0000 (22:07 -0800)
commit93860275f3ff2b42784479b360ddbd9da8afe794
treef66842beb0f9681884a9833389e2cb3840fef769
parent7f7e7b583c6e4a7c1a86bc3badc65d1c15fe08d4
Fix deparsing of glob(my $x) and CORE::glob

A git bisect run like this:

$ ../perl.git/Porting/bisect.pl --start=v5.12.0 --end=v5.18.0 -e 'use B::Deparse; die if new B::Deparse->coderef2text(sub{glob my $x}) =~ /</'

points to v5.13.8-86-gd1bea3d as being the commit that cause it to
output <my $x>.

But my local 5.14.4 installation still outputs glob(my $x), so I am
not sure which commit is responsible.  I suspect it changed multi-
ple times.

In any case, B::Deparse was expecting the argument to pp_glob always
to be a string, which is certainly not guaranteed.

This commit also causes CORE::glob to be deparsed correctly.  glob is
one of those oddities like require that gets only half-overridden by
overrides.  In this particular case the built-in pp_glob is still
used, but takes a different code path depending on whether it was pre-
fixed with CORE::.  So, while glob is a strong keyword, it needs to be
treated as a weak one for deparsing purposes.
lib/B/Deparse-core.t
lib/B/Deparse.pm