use Moo::_Utils;
use base qw(Role::Tiny);
+require Moo::sification;
+
BEGIN { *INFO = \%Role::Tiny::INFO }
our %INFO;
require Method::Generate::Accessor;
Method::Generate::Accessor->new
});
+ my $con_gen = $Moo::MAKERS{$target}{constructor};
my @attrs = @{$INFO{$role}{attributes}||[]};
while (my ($name, $spec) = splice @attrs, 0, 2) {
+ # needed to ensure we got an index for an arrayref based generator
+ if ($con_gen) {
+ $spec = $con_gen->all_attribute_specs->{$name};
+ }
$acc_gen->generate_method($target, $name, $spec);
}
}
$me->_inhale_if_moose($_) for @roles;
+ my $m;
+ if ($m = Moo->_accessor_maker_for($superclass)
+ and ref($m) ne 'Method::Generate::Accessor') {
+ # old fashioned way time.
+ *{_getglob("${new_name}::ISA")} = [ $superclass ];
+ $me->apply_roles_to_package($new_name, @roles);
+ return $new_name;
+ }
+
require Sub::Quote;
$me->SUPER::create_class_with_roles($superclass, @roles);