X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-StrictConstructor.git;a=blobdiff_plain;f=lib%2FMooseX%2FStrictConstructor.pm;h=c5bab4e6fad20bf74a11faaf5fd719c46f94efb2;hp=a1c4a5df93a5626589aa73305a5c7050069c8696;hb=8d7ba9ea782c19f98cbaa4131d900205910f9433;hpb=b3e9d27e013d5b2e00936b04a45142fb97a13e79 diff --git a/lib/MooseX/StrictConstructor.pm b/lib/MooseX/StrictConstructor.pm index a1c4a5d..c5bab4e 100644 --- a/lib/MooseX/StrictConstructor.pm +++ b/lib/MooseX/StrictConstructor.pm @@ -23,7 +23,9 @@ sub init_meta my $caller = $p{for_class}; - my $metameta = $caller->meta()->meta(); + my $old_meta = $caller->meta(); + + my $metameta = $old_meta->meta(); unless ( $metameta->can('does_role') && $metameta->does_role( 'MooseX::StrictConstructor::Role::Metaclass' ) ) { @@ -36,7 +38,13 @@ sub init_meta Class::MOP::remove_metaclass_by_name($caller); - $new_meta->name()->initialize($caller); + $new_meta->name()->initialize( $caller, + map { $_ => $old_meta->$_() } + qw( attribute_metaclass + method_metaclass + instance_metaclass + ) + ); } unless ( $caller->meta()->does_role('MooseX::StrictConstructor::Role::Object') )