Move the eval_environment wrapper to the Class trait from Constructor
Dave Rolsky [Tue, 10 Jan 2012 17:07:15 +0000 (11:07 -0600)]
lib/MooseX/StrictConstructor.pm
lib/MooseX/StrictConstructor/Trait/Class.pm
lib/MooseX/StrictConstructor/Trait/Method/Constructor.pm

index b45c3f0..aa81a45 100644 (file)
@@ -10,14 +10,16 @@ use Moose::Util::MetaRole;
 use MooseX::StrictConstructor::Trait::Class;
 use MooseX::StrictConstructor::Trait::Method::Constructor;;
 
-Moose::Exporter->setup_import_methods(
-    class_metaroles => {
-        class => ['MooseX::StrictConstructor::Trait::Class'],
-        constructor =>
-            ['MooseX::StrictConstructor::Trait::Method::Constructor'],
-    },
+my %metaroles = (
+    class => ['MooseX::StrictConstructor::Trait::Class'],
 );
 
+$metaroles{constructor}
+    = ['MooseX::StrictConstructor::Trait::Method::Constructor']
+    if $Moose::VERSION >= 1.9900;
+
+Moose::Exporter->setup_import_methods( class_metaroles => \%metaroles );
+
 1;
 
 # ABSTRACT: Make your object constructors blow up on unknown attributes
index aea38bd..f032fe5 100644 (file)
@@ -54,6 +54,24 @@ around _inline_BUILDALL => sub {
     );
 } if $Moose::VERSION >= 1.9900;
 
+around _eval_environment => sub {
+    my $orig = shift;
+    my $self = shift;
+
+    my $env = $self->$orig();
+
+    my %attrs = map { $_ => 1 }
+        grep { defined }
+        map  { $_->init_arg() }
+        $self->get_all_attributes();
+
+    $attrs{__INSTANCE__} = 1;
+
+    $env->{'%allowed_attrs'} = \%attrs;
+
+    return $env;
+} if $Moose::VERSION >= 1.9900;
+
 1;
 
 # ABSTRACT: A role to make immutable constructors strict
index 15ecf37..219e044 100644 (file)
@@ -31,24 +31,6 @@ EOF
     return $source;
 } if $Moose::VERSION < 1.9900;
 
-around _eval_environment => sub {
-    my $orig = shift;
-    my $self = shift;
-
-    my $env = $self->$orig();
-
-    my %attrs = map { $_ => 1 }
-        grep { defined }
-        map  { $_->init_arg() }
-        $self->associated_metaclass()->get_all_attributes();
-
-    $attrs{__INSTANCE__} = 1;
-
-    $env->{'%allowed_attrs'} = \%attrs;
-
-    return $env;
-} if $Moose::VERSION >= 1.9900;
-
 1;
 
 # ABSTRACT: A role to make immutable constructors strict