sub inject_fake_metaclass_for {
my ($name) = @_;
require Class::MOP;
+ require Moo::HandleMoose::FakeMetaClass;
Class::MOP::store_metaclass_by_name(
$name, bless({ name => $name }, 'Moo::HandleMoose::FakeMetaClass')
);
$meta;
}
-{
- package Moo::HandleMoose::FakeMetaClass;
-
- sub DESTROY { }
-
- sub AUTOLOAD {
- my ($meth) = (our $AUTOLOAD =~ /([^:]+)$/);
- Moo::HandleMoose::inject_real_metaclass_for((shift)->{name})->$meth(@_)
- }
- sub can {
- Moo::HandleMoose::inject_real_metaclass_for((shift)->{name})->can(@_)
- }
- sub isa {
- Moo::HandleMoose::inject_real_metaclass_for((shift)->{name})->isa(@_)
- }
-}
-
1;