diff options
-rw-r--r-- | lib/MooseX/Bread/Board/Meta/Role/Class.pm | 6 | ||||
-rw-r--r-- | t/34-extends.t | 15 |
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; |