Front page | perl.moose |
Postings from April 2012
Role composition bug?
Thread Next
From:
Ovid
Date:
April 8, 2012 12:31
Subject:
Role composition bug?
Message ID:
1333913485.4482.YahooMailNeo@web162105.mail.bf1.yahoo.com
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/
Thread Next
-
Role composition bug?
by Ovid