diff options
Diffstat (limited to 'lib/MooseX/ABC/Trait/Class.pm')
-rw-r--r-- | lib/MooseX/ABC/Trait/Class.pm | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/MooseX/ABC/Trait/Class.pm b/lib/MooseX/ABC/Trait/Class.pm index 6f4bf6c..b5388bf 100644 --- a/lib/MooseX/ABC/Trait/Class.pm +++ b/lib/MooseX/ABC/Trait/Class.pm @@ -41,7 +41,10 @@ around _immutable_options => sub { if ($self->has_required_methods) { push @options, inline_constructor => 0; } - elsif ($constructor->original_package_name eq 'MooseX::ABC::Role::Object') { + # we know that the base class has at least our base class role applied, + # so it's safe to replace it if there is only one wrapper. + elsif ($constructor->isa('Class::MOP::Method::Wrapped') + && $constructor->get_original_method == Class::MOP::class_of('Moose::Object')->get_method('new')) { push @options, replace_constructor => 1; } return @options; |