summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2009-05-29 00:23:27 -0500
committerJesse Luehrs <doy@tozt.net>2009-05-29 00:23:27 -0500
commit5a83002a3790db2565278c5b8085631b5e3172b3 (patch)
tree196c283534e768dd844e7c90ab4cdce875cb1c11
parentc94b01a949eadbc8864eac775c526ed8ffeeb98b (diff)
downloadmoosex-abc-5a83002a3790db2565278c5b8085631b5e3172b3.tar.gz
moosex-abc-5a83002a3790db2565278c5b8085631b5e3172b3.zip
fix the check for the constructor being intact
-rw-r--r--lib/MooseX/ABC/Trait/Class.pm5
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;