use Moose::Exporter;
use Moose::Util::MetaRole;
-{
- my %class_meta = ( class => ['MooseX::StrictConstructor::Trait::Class'] );
+use MooseX::StrictConstructor::Trait::Class;
+use MooseX::StrictConstructor::Trait::Method::Constructor;;
+my %metaroles = (
+ class => ['MooseX::StrictConstructor::Trait::Class'],
+);
- if ( $Moose::VERSION < 1.9900 ) {
- require MooseX::StrictConstructor::Trait::Method::Constructor;
- $class_meta{constructor}
- = ['MooseX::StrictConstructor::Trait::Method::Constructor'];
- }
+$metaroles{constructor}
+ = ['MooseX::StrictConstructor::Trait::Method::Constructor']
+ if $Moose::VERSION <= 1.9900;
- Moose::Exporter->setup_import_methods(
- class_metaroles => \%class_meta,
- );
-
- my $old_import = __PACKAGE__->can('import');
- no warnings 'redefine';
- *import = sub {
- my $caller = caller;
- Carp::croak "$_[0] can only be applied to Moose classes"
- unless eval { $caller->meta->isa('Moose::Meta::Class') };
-
- goto &$old_import;
- };
-}
+Moose::Exporter->setup_import_methods( class_metaroles => \%metaroles );
1;
=head1 DESCRIPTION
Simply loading this module makes your constructors "strict". If your
-constructor is called with an attribute init argument that your class
-does not declare, then it calls C<Moose->throw_error()>. This is a great way
-to catch small typos.
+constructor is called with an attribute init argument that your class does not
+declare, then it calls C<< Moose->throw_error() >>. This is a great way to
+catch small typos.
=head2 Subverting Strictness