mro::method_changed_in(..) ignores AUTOLOAD (RT #60220)
authorTony Cook <tony@develop-help.com>
Sat, 18 Jul 2009 19:49:04 +0000 (14:49 -0500)
committerDavid Mitchell <davem@iabyn.com>
Sun, 19 Jul 2009 21:48:26 +0000 (22:48 +0100)
commitd55d5b2971424909efedf267ba8f8e4b5437609b
tree459c9e82e1728b01845dfd1f1ca0b1b078a63cd9
parent5f15548b3430950e7bf479f68291201829c777bf
mro::method_changed_in(..) ignores AUTOLOAD (RT #60220)

Patch modified to use a boolean rather than an integer for tracking
mro changes in S_glob_assign_ref and test fixed not to warn.

URL: http://rt.perl.org/rt3/Ticket/Display.html?id=60220

From the bug report:

-----------------------------------------------------------------
When creating a subclass dynamically, and when adding
AUTOLOAD dynamically into the parent class, then that
AUTOLOAD is not seen in the method cache, even after
a call to "mro::method_changed_in('Parent')".

It only appears in the method cache after a call
to mro::invalidate_all_method_caches().

The attached test file demonstrates the problem.

This was detected while trying to solve bug 40159 in DBIx::DataModel.
-----------------------------------------------------------------

Message-ID: <20081031132021.GA21341@mars.tony.develop-help.com>

(cherry picked from commit 26d68d86a346a9cd3eddb7ee18bfaa50db17b7f0)
sv.c
t/mro/basic.t