From: Ian Jackson Date: Sun, 29 Dec 2019 15:50:28 +0000 (+0000) Subject: Syntax: Support &:local+global !... X-Git-Tag: v0.6.0~249^2~5 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=secnet.git;a=commitdiff_plain;h=1b25048c9412df63208906cb00c3572647039c7a Syntax: Support &:local+global !... Signed-off-by: Ian Jackson --- diff --git a/README b/README index 415913b..3d18dc2 100644 --- a/README +++ b/README @@ -174,10 +174,11 @@ So pathname syntax is a subset of: by the final warning state after processing all the toplevel input files (including Final.sd.mk). -&:local+global [&]VARIABLE ... +&:local+global [!][&]VARIABLE ... Suppresses any warnings relating to forthcoming mentions to VARIABLE or &VARIABLE, as applicable. Scope ends at the end of the current directory's Suffix.sd.mk. + Prefixing with ! removes [&]VARIABLE from the suppresion list. &:changequote NEWQUOTE changes the escape sequence from & to literally NEWQUOTE diff --git a/generate b/generate index 2278928..15e2235 100755 --- a/generate +++ b/generate @@ -296,8 +296,9 @@ sub process_input_mk ($$$$) { next; } elsif (s#^\s*$esc\:local\+global\s+(\S.*)$##) { foreach my $vn (split /\s+/, $1) { + my $pos = !($vn =~ s{^!}{}); my $amp = $vn =~ s{^$esc}{}; - $varref_exp{$vn}{!!$amp} = 1; + $varref_exp{$vn}{!!$amp} = $pos; } next; } elsif (s#^\s*$esc\:(?=(-?)include|macro)##) { diff --git a/tests/filter/stderr.expected b/tests/filter/stderr.expected index c23e275..5d777c2 100644 --- a/tests/filter/stderr.expected +++ b/tests/filter/stderr.expected @@ -13,4 +13,5 @@ subdirmk: warning (local+global): saw both WARN and &WARN saw &WARN at ./Dir.sd.mk:10 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 subdirmk: warning (unknown-warning): ./sub/dir/Dir.sd.mk:3: attempt to suppress unknown warning(s) `some-unknown-warning' diff --git a/tests/filter/sub/dir/Dir.mk.expected b/tests/filter/sub/dir/Dir.mk.expected index 9fe4f75..627eaa5 100644 --- a/tests/filter/sub/dir/Dir.mk.expected +++ b/tests/filter/sub/dir/Dir.mk.expected @@ -18,6 +18,8 @@ WARN += 5 $(NOWARN1) +sub_dir_WARN += 6 + # doctests: # Suffix in sub/dir diff --git a/tests/filter/sub/dir/Dir.sd.mk b/tests/filter/sub/dir/Dir.sd.mk index bc974ea..c3603a0 100644 --- a/tests/filter/sub/dir/Dir.sd.mk +++ b/tests/filter/sub/dir/Dir.sd.mk @@ -20,5 +20,8 @@ WARN += 5 $(NOWARN1) +&:local+global !&WARN +&WARN += 6 + # doctests: &:include &doctests.sd.mk