The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More;
use Test::Moose;

{
    package Bar;
    use Moose::Role;
}

{
    package Baz;
    use Moose::Role;
}

{
    package Foo;

    use Moose;
    use MooseX::Method::Signatures;

    method bar ($baz) does Bar { $baz }
    method bla ($baz) does Bar does Baz { $baz }
    method boo ($baz) does (Bar, Baz) { $baz }

}

my $o = Foo->new;

can_ok($o, 'bar');
my $method = Foo->meta->get_method('bar');
does_ok($method, 'Bar');

can_ok($o, 'bla');
$method = Foo->meta->get_method('bla');
does_ok($method, 'Bar');
does_ok($method, 'Baz');

can_ok($o, 'boo');
$method = Foo->meta->get_method('boo');
does_ok($method, 'Bar');
does_ok($method, 'Baz');

done_testing;