diff options
author | doy <doy@tozt.net> | 2009-04-07 22:15:42 -0500 |
---|---|---|
committer | doy <doy@tozt.net> | 2009-04-07 22:15:42 -0500 |
commit | 141dc024c6c5a8acb891ee439a5c204c70b150d7 (patch) | |
tree | 1bf3494d2dee44e7776ce4c9919615e2181514d0 /lib | |
parent | 749b2945c77a0ecca584e60a0ea48bb97062c9f2 (diff) | |
download | moosex-nonmoose-141dc024c6c5a8acb891ee439a5c204c70b150d7.tar.gz moosex-nonmoose-141dc024c6c5a8acb891ee439a5c204c70b150d7.zip |
SUPER is resolved at compile time
Diffstat (limited to 'lib')
-rw-r--r-- | lib/MooseX/NonMoose.pm | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/MooseX/NonMoose.pm b/lib/MooseX/NonMoose.pm index d60a996..d3004e0 100644 --- a/lib/MooseX/NonMoose.pm +++ b/lib/MooseX/NonMoose.pm @@ -12,9 +12,11 @@ sub extends_nonmoose { Moose::extends($caller, @superclasses); Class::MOP::Class->initialize($caller)->add_method(new => sub { my $class = shift; - my $self = $class->SUPER::new(@_); + my $meta = Class::MOP::Class->initialize($class); + my $super_new = $meta->find_next_method_by_name('new'); + my $self = $super_new->execute($class, @_); my $params = $class->BUILDARGS(@_); - my $moose_self = Class::MOP::Class->initialize($class)->new_object( + my $moose_self = $meta->new_object( __INSTANCE__ => $self, %$params, ); |