On 8/19/15 11:03 AM, Stephen Quinney wrote:
> I have a problem with using MooX::HandlesVia for attributes in roles
> when I consume more than one role in a class. I get:
>
> "Due to a method name conflict between roles 'SJQ::Role::Bar and
> SJQ::Role::Foo', the method 'has' must be implemented by 'SJQ::Baz' at
> /usr/share/perl5/vendor_perl/Role/Tiny.pm line 215."
>
> I can't see what I'm doing wrong here, any suggestions?
>
> Here's an example:
>
> {
> package SJQ::Role::Foo;
> use Moo::Role;
> use MooX::HandlesVia;
> }
>
> {
> package SJQ::Role::Bar;
> use Moo::Role;
> use MooX::HandlesVia;
> }
>
> {
> package SJQ::Baz;
> use Moo;
>
> with 'SJQ::Role::Foo','SJQ::Role::Bar';
>
> use namespace::clean;
> }
>
> my $test = SJQ::Baz->new();
>
>
>
This is a known issue: https://github.com/mattp-/MooX-HandlesVia/issues/4
Using namespace::clean is what I would recommend for a workaround. A
proper fix will involve an additional routine in Moo that
MooX::HandlesVia can use. This has been on my todo list for a while but
hasn't yet made it to the top.