Role composition bug?

[email protected] (Ovid)
Newsgroups perl.moose
Message-ID <[email protected]>
Hi all,

I'm wondering if this is a known bug or a misunderstanding on my part (I assume the latter):

    use 5.10.0;
    { package Role::A; use Moose::Role; with 'Role::C'; }
    { package Role::B; use Moose::Role; with 'Role::C'; }
    { package Role::C; use Moose::Role; with 'Role::D'; }
    {
        package Role::D;
        use Moose::Role;

        sub foo {
            my $proto = shift;
            my $class = ref $proto // $proto;
            return "$class\::foo";
        }
    }
    package Consume;
    use Moose;
    with qw(Role::A Role::B);
    say Moose->VERSION;
    say Consume->foo;

That prints out:

    2.0402
    Can't locate object method "foo" via package "Consume" at roles.pl line 19.
 
Given that Role::C uses Role::D and the latter provides the 'foo()' method, that method should be provided to both Role::A and Role::B since they each consume Role::C. When consuming those roles, the Consume class should then have the 'foo()' method, but it does not.

Did I misunderstand something? (For the curious, my Role::Basic module has the same bug).

Cheers,
Ovid
--
Live and work overseas - http://overseas-exile.blogspot.com/
Buy the book           - http://www.oreilly.com/catalog/perlhks/
Tech blog              - http://blogs.perl.org/users/ovid/
Twitter                - http://twitter.com/OvidPerl/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.