when inhaling Moose roles, only include original options for attributes
Graham Knop [Sun, 5 May 2013 14:26:15 +0000 (10:26 -0400)]
lib/Moo/Role.pm

index 1be78e2..07c32a7 100644 (file)
@@ -119,12 +119,14 @@ sub _inhale_if_moose {
     $INFO{$role}{requires} = [ $meta->get_required_method_list ];
     $INFO{$role}{attributes} = [
       map +($_ => do {
-        my $spec = { %{$meta->get_attribute($_)} };
+        my $attr = $meta->get_attribute($_);
+        my $is_mouse = $meta->isa('Mouse::Meta::Role');
+        my $spec = { %{ $is_mouse ? $attr : $attr->original_options } };
 
         if ($spec->{isa}) {
 
           my $get_constraint = do {
-            my $pkg = $meta->isa('Mouse::Meta::Role')
+            my $pkg = $is_mouse
                         ? 'Mouse::Util::TypeConstraints'
                         : 'Moose::Util::TypeConstraints';
             _load_module($pkg);