diff options
-rw-r--r-- | Changes | 2 | ||||
-rw-r--r-- | lib/Bread/Board/Declare/Meta/Role/Class.pm | 3 | ||||
-rw-r--r-- | t/inheritance.t | 10 |
3 files changed, 15 insertions, 0 deletions
@@ -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; |