On Thu, Mar 28, 2013 at 08:59:51AM -0700, Ovid wrote:
> So the following code will print 'c' (previously it was a fatal error
> requiring the dev to state exactly what they intended):
> 
>     use 5.01000;
>     { package a; use Moose::Role; sub result { 'a' } }
>     { package b; use Moose::Role; }
>     { package c; use Moose::Role; with qw(a b); sub result { 'c' } }
>     { package d; use Moose::Role; with qw(c); }
>     {
>         package Consumer; use Moose;
>         with 'd';
>     }
>     say Consumer->new->result;
> 
> And this will print 'a', even though the class is consuming what
> appears to be the same role:
> 
>     use 5.01000;
>     { package a; use Moose::Role; sub result { 'a' } }
>     { package b; use Moose::Role; }
>     { package c; use Moose::Role; with qw(a b); sub result { 'c' } }
>     { package d; use Moose::Role; with qw(c); }
>     {
>         package Consumer; use Moose;
>         with 'd';
>     }
>     say Consumer->new->result;
> 
> Note that in the above examples, I have changed nothing but the order
> in which the roles are consumed, but my behavior has changed.

I can't tell what point you're trying to make here, because these two
code samples are identical.

-doy

Reply via email to