From: Ian Jackson Date: Sun, 29 Dec 2019 15:56:44 +0000 (+0000) Subject: generate: Mention suppressions when warning re VAR vs &VAR X-Git-Tag: v0.6.0~249^2~4 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=secnet.git;a=commitdiff_plain;h=81b2907f353e0ced12c22e31c4598aad6adf5039 generate: Mention suppressions when warning re VAR vs &VAR When we are actually printing the warning, report all the locations, including the suppressed ones. Signed-off-by: Ian Jackson --- diff --git a/generate b/generate index 15e2235..ad8c9ea 100755 --- a/generate +++ b/generate @@ -263,8 +263,8 @@ sub process_input_mk ($$$$) { # accurate, since it is only going to be used for advice to the user. my $note_varref = sub { my ($vn,$amp) = @_; - return if $varref_exp{$vn}{$amp}; - $varref{$vn}{$amp}{"$f:$."} = 1; + my $exp = !!$varref_exp{$vn}{$amp}; + $varref{$vn}{$exp}{$amp}{"$f:$."} = 1; }; while (<$input>) { @@ -530,15 +530,20 @@ sub flmap ($) { local ($_) = @_; s{:(\d+)$}{ sprintf ":%10d", $1 }e; $_; } sub print_varref_warnings () { foreach my $vn (sort keys %varref) { my $vv = $varref{$vn}; - next unless $vv->{''} && $vv->{1}; + next unless $vv->{''}{''} && $vv->{''}{1}; wrncore 'local+global', "saw both $vn and &$vn" or return; + foreach my $exp ('', 1) { foreach my $amp ('', 1) { - printf STDERR " saw %s%s at %s\n", + printf STDERR + ($exp + ? " expectedly saw %s%s at %s\n" + : " saw %s%s at %s\n"), ($amp ? '&' : ''), $vn, $_ foreach sort { flmap($a) cmp flmap($b) } - keys %{ $vv->{$amp} }; + keys %{ $vv->{$exp}{$amp} }; } + } } } diff --git a/tests/filter/stderr.expected b/tests/filter/stderr.expected index 5d777c2..a53c7f7 100644 --- a/tests/filter/stderr.expected +++ b/tests/filter/stderr.expected @@ -4,6 +4,7 @@ subdirmk: warning (broken-var-ref): ./Dir.sd.mk:19: broken $&... expansion; you subdirmk: warning (local+global): saw both NOWARN1 and &NOWARN1 saw NOWARN1 at ./sub/dir/Dir.sd.mk:21 saw &NOWARN1 at ./Dir.sd.mk:14 + expectedly saw NOWARN1 at ./Dir.sd.mk:14 subdirmk: warning (local+global): saw both WARN and &WARN saw WARN at ./Dir.sd.mk:6 saw WARN at ./Dir.sd.mk:9 @@ -14,4 +15,5 @@ subdirmk: warning (local+global): saw both WARN and &WARN saw &WARN at ./Dir.sd.mk:11 saw &WARN at ./sub/dir/Dir.sd.mk:15 saw &WARN at ./sub/dir/Dir.sd.mk:24 + expectedly saw &WARN at ./sub/dir/Dir.sd.mk:18 subdirmk: warning (unknown-warning): ./sub/dir/Dir.sd.mk:3: attempt to suppress unknown warning(s) `some-unknown-warning'