use strict;
use warnings;
-our $VERSION = '0.06_01';
+our $VERSION = '0.08';
$VERSION = eval $VERSION;
-use Class::MOP ();
-use Moose ();
+use Moose 0.94 ();
use Moose::Exporter;
use Moose::Util::MetaRole;
use MooseX::StrictConstructor::Role::Object;
use MooseX::StrictConstructor::Role::Meta::Method::Constructor;
-Moose::Exporter->setup_import_methods( also => 'Moose' );
+Moose::Exporter->setup_import_methods();
-sub init_meta
-{
+sub init_meta {
shift;
my %p = @_;
my $caller = $p{for_class};
- Moose::Util::MetaRole::apply_metaclass_roles
- ( for_class => $caller,
- constructor_class_roles =>
- ['MooseX::StrictConstructor::Role::Meta::Method::Constructor'],
- );
+ Moose::Util::MetaRole::apply_metaroles(
+ for => $caller,
+ class_metaroles => {
+ constructor => [
+ 'MooseX::StrictConstructor::Role::Meta::Method::Constructor']
+ },
+ );
- Moose::Util::MetaRole::apply_base_class_roles
- ( for_class => $caller,
- roles =>
- [ 'MooseX::StrictConstructor::Role::Object' ],
- );
+ Moose::Util::MetaRole::apply_base_class_roles(
+ for => $caller,
+ roles =>
+ ['MooseX::StrictConstructor::Role::Object'],
+ );
return $caller->meta();
}
package My::Class;
- use MooseX::StrictConstructor; # instead of use Moose
+ use Moose;
+ use MooseX::StrictConstructor;
has 'size' => ...;
=head1 DESCRIPTION
-Using this class to load Moose instead of just loading using Moose
-itself makes your constructors "strict". If your constructor is called
-with an attribute init argument that your class does not declare, then
-it calls "Carp::confess()". This is a great way to catch small typos.
+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 "Carp::confess()". This is a great way
+to catch small typos.
=head2 Subverting Strictness