The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 5;

use MooseX::Declare;

role Fooable { has foo => (is => 'ro', default => 1) }
role Barable { has bar => (is => 'ro', default => 1) }

class FooBar1 with (Fooable, Barable) {}

my $foobar1 = FooBar1->new;

is $foobar1->foo, 1;
is $foobar1->bar, 1;

class FooBar2 with Fooable with Barable {}

my $foobar2 = FooBar2->new;

is $foobar2->foo, 1;
is $foobar2->bar, 1;

TODO: {
    local $TODO = 'we need better error messages on parse fail';
    #error message should refer to this file, not an internal file
    #NOTE: string eval is needed because this happens at compile time
    eval "class FooBar with Fooable, Barable {}";
    like $@, qr/999_misc[.]t/;
}

#FIXME: decide on a good error message and check for it here