This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Make SUPER:: in main less sensitive
authorFather Chrysostomos <sprout@cpan.org>
Fri, 14 Sep 2012 20:13:30 +0000 (13:13 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 15 Sep 2012 05:29:47 +0000 (22:29 -0700)
commit3c104e59d83f6195ebcc80776f15604d74d666b2
treef1a5edcc23b2b697687d2baf4eccb73d01e2cc08
parent697efb9be70535836d8ebd1327ecb1c72666000e
Make SUPER:: in main less sensitive

$ perl -e '$main::SUPER::; sub bar::bar{} @ISA = bar; main->SUPER::bar'
$ perl -e '$SUPER::; sub bar::bar{} @ISA = bar; main->SUPER::bar'
Can't locate object method "bar" via package "main" at -e line 1.

(That’s 5.10.1.  More recent perls say package "SUPER".)

The only differnce that $SUPER:: variable makes is the name of
the SUPER:: package.  It ends up being called SUPER instead of
main::SUPER.

This causes problems because gv_fetchmeth_pvn, seeing a package end-
ing in ::SUPER, strips off the ::SUPER before doing isa lookup.

But SUPER does not end in ::SUPER, so this commit adjusts
gv_fetchmeth_pvn to account.
gv.c
t/op/method.t