From 93eab51bc542fed536c8b0a51a4ee3dbf82b53f4 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 15 Jun 2010 02:10:41 -0500 Subject: fallback constructor still needs to set __INSTANCE__ properly --- lib/MooseX/NonMoose/Meta/Role/Constructor.pm | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'lib') diff --git a/lib/MooseX/NonMoose/Meta/Role/Constructor.pm b/lib/MooseX/NonMoose/Meta/Role/Constructor.pm index 38c70f0..4b3ee82 100644 --- a/lib/MooseX/NonMoose/Meta/Role/Constructor.pm +++ b/lib/MooseX/NonMoose/Meta/Role/Constructor.pm @@ -46,6 +46,19 @@ around can_be_inlined => sub { return $self->$orig(@_); }; +sub _generate_fallback_constructor { + my $self = shift; + my ($class_var) = @_; + my $new = $self->name; + my $meta = $self->associated_metaclass; + my $super_new_class = $meta->find_next_method_by_name($new)->package_name; + my $arglist = $meta->get_method('FOREIGNBUILDARGS') + ? "${class_var}->FOREIGNBUILDARGS(\@_)" + : '@_'; + my $instance = "${class_var}->${super_new_class}::$new($arglist)"; + "${class_var}->Moose::Object::new(__INSTANCE__ => $instance, \@_)" +} + sub _generate_instance { my $self = shift; my ($var, $class_var) = @_; -- cgit v1.2.3-54-g00ecf