From 9c80a3d3f83f9d7f09d001564d6352238e871ebf Mon Sep 17 00:00:00 2001 From: doy Date: Fri, 10 Apr 2009 02:10:53 -0500 Subject: add a few comments --- lib/MooseX/NonMoose.pm | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib') diff --git a/lib/MooseX/NonMoose.pm b/lib/MooseX/NonMoose.pm index b03c2cd..db2e385 100644 --- a/lib/MooseX/NonMoose.pm +++ b/lib/MooseX/NonMoose.pm @@ -20,9 +20,15 @@ sub extends_nonmoose { $meta->add_method(new => sub { my $class = shift; my $meta = Class::MOP::Class->initialize($class); + + # we need to get the non-moose constructor from the superclass + # of the class where this method actually exists my $caller_meta = Class::MOP::Class->initialize($caller); my $super_new = $caller_meta->find_next_method_by_name('new'); + # but we need to call it as a method on the class we're actually + # trying to instantiate my $self = $super_new->execute($class, @_); + my $params = $class->BUILDARGS(@_); my $moose_self = $meta->new_object( __INSTANCE__ => $self, -- cgit v1.2.3-54-g00ecf