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