role support, in MooseX::StrictConstructor::FromRole
[gitmo/MooseX-StrictConstructor.git] / lib / MooseX / StrictConstructor / Trait / ApplicationToRole.pm
diff --git a/lib/MooseX/StrictConstructor/Trait/ApplicationToRole.pm b/lib/MooseX/StrictConstructor/Trait/ApplicationToRole.pm
new file mode 100644 (file)
index 0000000..5f8e629
--- /dev/null
@@ -0,0 +1,26 @@
+package MooseX::StrictConstructor::Trait::ApplicationToRole;
+use Moose::Role;
+
+around apply => sub {
+    my $orig  = shift;
+    my $self  = shift;
+    my ($role1, $role2) = @_;
+
+    $role2 = Moose::Util::MetaRole::apply_metaroles(
+        for             => $role2,
+        role_metaroles => {
+            application_to_class => [
+                'MooseX::StrictConstructor::Trait::ApplicationToClass',
+            ],
+            application_to_role => [
+                'MooseX::StrictConstructor::Trait::ApplicationToRole',
+            ],
+        }
+    );
+
+    $self->$orig( $role1, $role2 );
+};
+
+no Moose::Role;
+
+1;