@ 11d698f

260607.1.2 · ae25a78b0b16394dfdf817aa5a319e4b81e51e4b

Fix inclusion of excluded type with multiple filters

reading declarations

lib/App/Ack/ConfigLoader.pm

@@ -124,8 +124,9 @@ sub _uninvert_filter {     for ( my $i = 0; $i < @{ $opt->{filters} }; $i++ ) {         my $opt_filter = @{ $opt->{filters} }[$i]; -        # XXX Do a real list comparison? This just checks string equivalence.-        if ( $opt_filter->is_inverted() && "$opt_filter->{filter}" eq "@filters" ) {+        if ( $opt_filter->is_inverted()+            && grep { $_ == $opt_filter->{filter} } @filters )+        {             splice @{ $opt->{filters} }, $i, 1;             $i--;         }

t/ack-type.yaml

@@ -18,3 +18,27 @@ args: >-   -t cmake -f t/swamp stdout: |   t/swamp/CMakeLists.txt++---+name: --type-set, --type-add, and exclude+args: >-+  --ignore-ack-defaults+  --type-set=cmake:is:CMakeLists.txt+  --type-add=cmake:ext:cmake+  --type=nocmake+  -k -f t/swamp+exitcode: 1+stderr: ''+stdout: ''++---+name: --type-set, --type-add, and override exclusion+args: >-+  --ignore-ack-defaults+  --type-set=cmake:is:CMakeLists.txt+  --type-add=cmake:ext:cmake+  --type=nocmake+  -t cmake -f t/swamp+stdout: |+  t/swamp/CMakeLists.txt+  t/swamp/stuff.cmake