1#!perl 2 3use strict; 4use warnings; 5use Perl::Lint::Policy::Subroutines::ProhibitAmpersandSigils; 6use t::Policy::Util qw/fetch_violations/; 7use Test::Base::Less; 8 9my $class_name = 'Subroutines::ProhibitAmpersandSigils'; 10 11filters { 12 params => [qw/eval/], # TODO wrong! 13}; 14 15for my $block (blocks) { 16 my $violations = fetch_violations($class_name, $block->input, $block->params); 17 is scalar @$violations, $block->failures, $block->dscr; 18} 19 20done_testing; 21 22__DATA__ 23 24=== 25--- dscr: basic failures 26--- failures: 7 27--- params: 28--- input 29&function_call(); 30&my_package::function_call(); 31&function_call( $args ); 32&my_package::function_call( %args ); 33&function_call( &other_call( @foo ), @bar ); 34&::function_call(); 35 36=== 37--- dscr: basic passing 38--- failures: 0 39--- params: 40--- input 41defined &function_call; 42\ &function_call; 43\&function_call; 44exists &my_package::function_call; 45defined &my_package::function_call; 46\ &my_package::function_call; 47\&my_package::function_call; 48$$foo; # for Devel::Cover; skip non-backslash casts 49 50=== 51--- dscr: RT #38855 passing with parens 52--- failures: 0 53--- params: 54--- input 55defined( &function_call ); 56exists( &function_call ); 57 58=== 59--- dscr: RT #49609 recognize reference-taking distributes over parens 60--- failures: 0 61--- params: 62--- input 63\( &function_call ); 64\( &function_call, &another_function ); 65 66=== 67--- dscr: more passing 68--- failures: 0 69--- params: 70--- input 71my_package::function_call(); 72function_call( $args ); 73my_package::function_call( %args ); 74function_call( other_call( @foo ), @bar ); 75\&my_package::function_call; 76\&function_call; 77goto &foo; 78 79=== 80--- dscr: handle that the first bareword after "sort" is the comparator function 81--- failures: 0 82--- params: 83--- input 84sort &foo($x) 85 86=== 87--- dscr: no lint 88--- failures: 5 89--- params: 90--- input 91&function_call(); 92&my_package::function_call(); 93&function_call( $args ); 94&my_package::function_call( %args ); 95&function_call( &other_call( @foo ), @bar ); ## no lint 96&::function_call(); 97 98