When we are actually printing the warning, report all the locations,
including the suppressed ones.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
# accurate, since it is only going to be used for advice to the user.
my $note_varref = sub {
my ($vn,$amp) = @_;
# 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;
sub print_varref_warnings () {
foreach my $vn (sort keys %varref) {
my $vv = $varref{$vn};
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;
wrncore 'local+global', "saw both $vn and &$vn" or return;
+ foreach my $exp ('', 1) {
foreach my $amp ('', 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) }
($amp ? '&' : ''), $vn, $_
foreach
sort { flmap($a) cmp flmap($b) }
+ keys %{ $vv->{$exp}{$amp} };
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
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
subdirmk: warning (local+global): saw both WARN and &WARN
saw WARN at ./Dir.sd.mk:6
saw WARN at ./Dir.sd.mk:9
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
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'
subdirmk: warning (unknown-warning): ./sub/dir/Dir.sd.mk:3: attempt to suppress unknown warning(s) `some-unknown-warning'