summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Changes2
-rw-r--r--lib/Bread/Board/Declare/Meta/Role/Class.pm3
-rw-r--r--t/inheritance.t10
3 files changed, 15 insertions, 0 deletions
diff --git a/Changes b/Changes
index e1d0a16..e5c0c9a 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,8 @@
Revision history for Bread-Board-Declare
{{$NEXT}}
+ - fix inheriting from classes which aren't yet loaded (reported by
+ xenoterracide)
0.13 2013-03-07
- fix for hash randomization in blead
diff --git a/lib/Bread/Board/Declare/Meta/Role/Class.pm b/lib/Bread/Board/Declare/Meta/Role/Class.pm
index 795e99d..0191a2c 100644
--- a/lib/Bread/Board/Declare/Meta/Role/Class.pm
+++ b/lib/Bread/Board/Declare/Meta/Role/Class.pm
@@ -3,6 +3,7 @@ use Moose::Role;
# ABSTRACT: class metarole for Bread::Board::Declare
use Bread::Board::Service;
+use Class::Load qw(load_class);
use List::MoreUtils qw(any);
=head1 DESCRIPTION
@@ -33,6 +34,8 @@ before superclasses => sub {
die "Multiple inheritance is not supported for Bread::Board::Declare classes"
if @_ > 1;
+ load_class($_[0]);
+
return if $_[0]->isa('Bread::Board::Container');
die "Cannot inherit from " . join(', ', @_)
diff --git a/t/inheritance.t b/t/inheritance.t
index b1517e8..396a731 100644
--- a/t/inheritance.t
+++ b/t/inheritance.t
@@ -3,6 +3,7 @@ use strict;
use warnings;
use Test::More;
use Test::Moose;
+use Test::Fatal;
{
package Parent;
@@ -120,4 +121,13 @@ with_immutable {
}
} 'Parent', 'Child';
+{
+ package FromDisk::Sub;
+ use Moose;
+ use Bread::Board::Declare;
+ use lib 't/lib';
+
+ ::is(::exception { extends 'FromDisk' }, undef);
+}
+
done_testing;