chiark / gitweb /
Warnings: Introduce new `broken-var-ref' warning
[secnet.git] / generate
index 61bbd507c683adc89d5fe648260737a7c0492e73..510612993f34fe82f8c6f60689d73552d5d7eeb6 100755 (executable)
--- a/generate
+++ b/generate
@@ -177,6 +177,7 @@ our @warn_ena_dfl = map { $_ => 1 } qw(
     local+global
     single-char-var
     unknown-warning
+    broken-var-ref
 );
 our %warn_ena = @warn_ena_dfl;
 
@@ -198,6 +199,8 @@ sub wrncore ($$) {
 
 sub wrn ($$) {
     my ($wk,$m) = @_;
+    our %warn_dedupe;
+    return 0 if $warn_dedupe{$err_file,$.,$wk,$m}++;
     wrncore($wk, "${err_file}:$.: $m");
 }
 
@@ -330,6 +333,10 @@ sub process_input_mk ($$$$) {
                    wrn 'single-char-var',
                    'possibly confusing unbracketed single-char $-expansion';
                }
+               elsif (m{^$esc}) {
+                   wrn 'broken-var-ref',
+                   'broken $&... expansion; you probably meant &$';
+               }
                elsif (m{^\(($esc)?([^()\$]+)\)} ||
                       m{^\{($esc)?([^{}\$]+)\}}) {
                    $note_varref->($2,!!$1);