summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authordoy <doy@tozt.net>2009-04-07 22:15:42 -0500
committerdoy <doy@tozt.net>2009-04-07 22:15:42 -0500
commit141dc024c6c5a8acb891ee439a5c204c70b150d7 (patch)
tree1bf3494d2dee44e7776ce4c9919615e2181514d0 /lib
parent749b2945c77a0ecca584e60a0ea48bb97062c9f2 (diff)
downloadmoosex-nonmoose-141dc024c6c5a8acb891ee439a5c204c70b150d7.tar.gz
moosex-nonmoose-141dc024c6c5a8acb891ee439a5c204c70b150d7.zip
SUPER is resolved at compile time
Diffstat (limited to 'lib')
-rw-r--r--lib/MooseX/NonMoose.pm6
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,
);