]> git.vpit.fr Git - perl/modules/Perl-Critic-Policy-Dynamic-NoIndirect.git/blobdiff - lib/Perl/Critic/Policy/Dynamic/NoIndirect.pm
Make the policy aware of blocks reported by indirect 0.16
[perl/modules/Perl-Critic-Policy-Dynamic-NoIndirect.git] / lib / Perl / Critic / Policy / Dynamic / NoIndirect.pm
index 13bd46722b633d90bf9681d35a01ee20e2fabd2a..cb88e6bae8fd68bd26e97a566374bbbd34778a71 100644 (file)
@@ -34,6 +34,12 @@ sub default_severity { $SEVERITY_HIGH }
 sub default_themes   { qw/dynamic maintenance/ }
 sub applies_to       { 'PPI::Document' }
 
+my $tag_obj = sub {
+ my $obj = '' . $_[0];
+ $obj = '{' if $obj =~ /^\s*\{/;
+ $obj;
+};
+
 sub violates_dynamic {
  my ($self, undef, $doc) = @_;
 
@@ -78,7 +84,7 @@ sub violates_dynamic {
   for (@errs) {
    my ($obj, $meth, $line) = @$_[0, 1, 3];
    $line -= $offset;
-   my $tag = join "\0", $line, $meth, $obj;
+   my $tag = join "\0", $line, $meth, $tag_obj->($obj);
    push @{$errs_tags{$tag}}, [ $obj, $meth ];
   }
 
@@ -87,7 +93,7 @@ sub violates_dynamic {
    my $pos = $elt->location;
    return 0 unless $pos;
 
-   my $tag = join "\0", $pos->[0], $elt, $elt->snext_sibling;
+   my $tag = join "\0", $pos->[0], $elt, $tag_obj->($elt->snext_sibling);
    if (my $errs = $errs_tags{$tag}) {
     push @violations, do { my $e = pop @$errs; push @$e, $elt; $e };
     delete $errs_tags{$tag} unless @$errs;