X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FPerl%2FCritic%2FPolicy%2FDynamicMoose%2FRequireMethodModifiers.pm;h=758047053d46f0485d36237feecc24591baf1e57;hb=e842cd1d0cc4efc62926318b4ed87e851635490d;hp=561b5c820491da2f4a161cb8aad5bb1384a7d25f;hpb=fe41192466c7a391cf8f66159e52612fd2b4d51d;p=gitmo%2FPerl-Critic-Dynamic-Moose.git diff --git a/lib/Perl/Critic/Policy/DynamicMoose/RequireMethodModifiers.pm b/lib/Perl/Critic/Policy/DynamicMoose/RequireMethodModifiers.pm index 561b5c8..7580470 100644 --- a/lib/Perl/Critic/Policy/DynamicMoose/RequireMethodModifiers.pm +++ b/lib/Perl/Critic/Policy/DynamicMoose/RequireMethodModifiers.pm @@ -19,11 +19,18 @@ sub violates_metaclass { for my $name (keys %$map) { my $method = $map->{$name}; - # Modifiers are always fine. - next if $method->isa('Class::MOP::Method::Wrapped') - || $method->isa('Moose::Meta::Method::Overridden') + # override and augment modifiers are always fine. + next if $method->isa('Moose::Meta::Method::Overridden') || $method->isa('Moose::Meta::Method::Augmented'); + # Since we can implicitly override and wrap in the same class, we + # need to be a little more careful here. + if ($method->isa('Class::MOP::Method::Wrapped')) { + my $orig_method = $method->get_original_method; + next if $method->associated_metaclass->name + ne $orig_method->associated_metaclass->name; + } + # Generated methods next if $method->isa('Class::MOP::Method::Generated');