## name No collision ## failures 0 ## cut package Role; use Moose::Role; sub role {} package Class; use Moose; with 'Role'; sub class {} #----------------------------------------------------------------------------- ## name Name collision ## failures 1 ## cut package Role; use Moose::Role; sub foo {} package Class; use Moose; with 'Role'; sub foo {} #----------------------------------------------------------------------------- ## name Name collision with exclusion ## failures 0 ## cut package Role; use Moose::Role; sub foo {} package Class; use Moose; with 'Role' => { excludes => 'foo' }; sub foo {} #----------------------------------------------------------------------------- ## name Name collision from two roles ## failures 1 ## cut package Role::A; use Moose::Role; sub foo {} package Role::B; use Moose::Role; sub foo {} package Class; use Moose; with 'Role::A'; with 'Role::B'; #----------------------------------------------------------------------------- ## name Name collision with aliasing ## failures 0 ## cut package Role; use Moose::Role; sub foo {} package Class; use Moose; with 'Role' => { alias => { foo => 'foo_bar' } }; sub foo {} #----------------------------------------------------------------------------- ## name Collision via same role ## failures 0 ## cut package Ur::Role; use Moose::Role; sub foo { die "yawr" } package Role::Refined; use Moose::Role; with 'Ur::Role'; package Role::Distinguished; use Moose::Role; with 'Ur::Role'; package Class; use Moose; with 'Role::Refined'; with 'Role::Distinguished';