diff options
author | Jesse Luehrs <doy@tozt.net> | 2011-02-09 20:54:14 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2011-02-09 20:54:14 -0600 |
commit | 427c7802170813f206241e5d0289575cae82079b (patch) | |
tree | 32517bf59637fd18ce129f32ac3c807191da236d /lib/MooseX/NonMoose/Meta/Role/Constructor.pm | |
parent | 1d65d3c9ff7a1645522ca9a37ee3eacf98c4a00f (diff) | |
download | moosex-nonmoose-427c7802170813f206241e5d0289575cae82079b.tar.gz moosex-nonmoose-427c7802170813f206241e5d0289575cae82079b.zip |
moose 2.0 compatibility
Diffstat (limited to 'lib/MooseX/NonMoose/Meta/Role/Constructor.pm')
-rw-r--r-- | lib/MooseX/NonMoose/Meta/Role/Constructor.pm | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/lib/MooseX/NonMoose/Meta/Role/Constructor.pm b/lib/MooseX/NonMoose/Meta/Role/Constructor.pm index db13781..272bc95 100644 --- a/lib/MooseX/NonMoose/Meta/Role/Constructor.pm +++ b/lib/MooseX/NonMoose/Meta/Role/Constructor.pm @@ -46,25 +46,13 @@ around can_be_inlined => sub { return $self->$orig(@_); }; -sub _find_next_nonmoose_constructor_package { - my $self = shift; - my $new = $self->name; - my $meta = $self->associated_metaclass; - for my $method (map { $_->{code} } $meta->find_all_methods_by_name($new)) { - next if $method->associated_metaclass->meta->can('does_role') - && $method->associated_metaclass->meta->does_role('MooseX::NonMoose::Meta::Role::Class'); - return $method->package_name; - } - # this should never happen (it should find Moose::Object at least) - $meta->throw_error("Couldn't find a non-Moose constructor for " . $meta->name); -} - +# for Moose 1.21 compatibility sub _generate_fallback_constructor { my $self = shift; my ($class_var) = @_; my $new = $self->name; my $meta = $self->associated_metaclass; - my $super_new_class = $self->_find_next_nonmoose_constructor_package; + my $super_new_class = $meta->_find_next_nonmoose_constructor_package; my $arglist = $meta->find_method_by_name('FOREIGNBUILDARGS') ? "${class_var}->FOREIGNBUILDARGS(\@_)" : '@_'; @@ -83,12 +71,13 @@ sub _generate_fallback_constructor { . "}"; } +# for Moose 1.21 compatibility sub _generate_instance { my $self = shift; my ($var, $class_var) = @_; my $new = $self->name; my $meta = $self->associated_metaclass; - my $super_new_class = $self->_find_next_nonmoose_constructor_package; + my $super_new_class = $meta->_find_next_nonmoose_constructor_package; my $arglist = $meta->find_method_by_name('FOREIGNBUILDARGS') ? "${class_var}->FOREIGNBUILDARGS(\@_)" : '@_'; |