This change gets Recipe 11 working. Here are the details ...
authorDave Rolsky <autarch@urth.org>
Thu, 19 Jun 2008 14:39:17 +0000 (14:39 +0000)
committerDave Rolsky <autarch@urth.org>
Thu, 19 Jun 2008 14:39:17 +0000 (14:39 +0000)
commitdb9476b157548c0e0d0f5d8305b9b42414cec6c4
tree6ba11bb445cd5ee4c7bdd6fe1573a178bcf96d22
parent9711d93b9af14dd90b01cae05e9343358ad8afbb
This change gets Recipe 11 working. Here are the details ...

When a role (RoleA) does some other role (RoleB) and explicitly
aliases some method(s) from RoleB, those methods were always added to
the required method list for any consumer of RoleA. However, if RoleA
provides an implementation of those methods, they should not be
required by a consumer.

This fixes the recipe 11 tests. I also had to change some existing
role application tests, which explicitly tested for the old
behavior. Perigrin and I both agree that the old behavior makes no
sense, since what else is the purpose of aliasing a method in a role?

I also added some additional tests to make sure that when the aliasing
role _does not_ implement the method, it _does_ get added to the
required method list.
Changes
lib/Moose/Meta/Role/Application/ToRole.pm
t/000_recipes/011_advanced_role_composition.t
t/030_roles/013_method_aliasing_in_composition.t