summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/MooseX/Bread/Board/Meta/Role/Class.pm6
-rw-r--r--t/34-extends.t15
2 files changed, 20 insertions, 1 deletions
diff --git a/lib/MooseX/Bread/Board/Meta/Role/Class.pm b/lib/MooseX/Bread/Board/Meta/Role/Class.pm
index 47c34bd..e48c9f6 100644
--- a/lib/MooseX/Bread/Board/Meta/Role/Class.pm
+++ b/lib/MooseX/Bread/Board/Meta/Role/Class.pm
@@ -35,7 +35,11 @@ before superclasses => sub {
my $self = shift;
return unless @_;
- return if any { $_->isa('Bread::Board::Container') } @_;
+
+ die "Multiple inheritance is not supported for MooseX::Bread::Board classes"
+ if @_ > 1;
+
+ return if $_[0]->isa('Bread::Board::Container');
die "Cannot inherit from " . join(', ', @_)
. " because MooseX::Bread::Board classes must inherit"
diff --git a/t/34-extends.t b/t/34-extends.t
index bb66271..c6eec1f 100644
--- a/t/34-extends.t
+++ b/t/34-extends.t
@@ -10,6 +10,18 @@ use Test::Fatal;
}
{
+ package Baz;
+ use Moose;
+ use MooseX::Bread::Board;
+}
+
+{
+ package Quux;
+ use Moose;
+ use MooseX::Bread::Board;
+}
+
+{
package Foo;
use Moose;
use MooseX::Bread::Board;
@@ -17,6 +29,9 @@ use Test::Fatal;
::like(::exception { extends 'Bar' },
qr/^Cannot inherit from Bar because MooseX::Bread::Board classes must inherit from Bread::Board::Container/,
"error when inheriting from a non-container");
+ ::like(::exception { extends 'Baz', 'Quux' },
+ qr/^Multiple inheritance is not supported for MooseX::Bread::Board classes/,
+ "error when inheriting from multiple containers");
}
done_testing;