From ea81da0f3d0ace97640a5579fd9755f08a92519b Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 9 May 2011 02:16:50 -0500 Subject: fix metaclass reinitialization --- lib/MooseX/NonMoose/Meta/Role/Class.pm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'lib') diff --git a/lib/MooseX/NonMoose/Meta/Role/Class.pm b/lib/MooseX/NonMoose/Meta/Role/Class.pm index 579e618..e873877 100644 --- a/lib/MooseX/NonMoose/Meta/Role/Class.pm +++ b/lib/MooseX/NonMoose/Meta/Role/Class.pm @@ -54,6 +54,25 @@ has constructor_name => ( default => sub { shift->throw_error("No constructor name has been set") }, ); +# XXX ugh, really need to fix this in moose +around reinitialize => sub { + my $orig = shift; + my $class = shift; + my ($pkg) = @_; + + my $meta = blessed($pkg) ? $pkg : Class::MOP::class_of($pkg); + + $class->$orig( + @_, + (map { $_->init_arg => $_->get_value($meta) } + grep { $_->has_value($meta) } + map { $meta->meta->find_attribute_by_name($_) } + qw(has_nonmoose_constructor + has_nonmoose_destructor + constructor_name)), + ); +}; + sub _determine_constructor_options { my $self = shift; my @options = @_; -- cgit v1.2.3