summaryrefslogtreecommitdiffstats
path: root/lib/MooseX/NonMoose/Meta/Role/Constructor.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/MooseX/NonMoose/Meta/Role/Constructor.pm')
-rw-r--r--lib/MooseX/NonMoose/Meta/Role/Constructor.pm19
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(\@_)"
: '@_';