use strict; use warnings; { package Catalyst::Controller; use Moose; use namespace::clean -except => 'meta'; use MooseX::MethodAttributes; BEGIN { extends 'MooseX::MethodAttributes::Inheritable'; } } { package ControllerRole; use Moose::Role -traits => 'MethodAttributes'; use namespace::clean -except => 'meta'; sub excluded : Local {} } { package roles::Controller::Foo; use Moose; BEGIN { extends 'Catalyst::Controller'; } use Test::Exception; with 'ControllerRole' => { -excludes => 'not_attributed' }; } use Test::More tests => 1; my $meta = roles::Controller::Foo->meta; TODO: { local $TODO = 'Aliasing and exclusion does not work'; ok !$meta->get_method('excluded'); }