by more letters. Note that &$FOO works differently to
raw make: it expands to $(sub_dir_FOO).
+ broken-var-ref
+ An attempt at variable expansion looking like $&...
+ You probably expected this to mean $(TOP_F)BAR but it
+ expands to $TOP_FBAR which make thinks means $(T)OP_FBAR.
+
unknown-warning
&:warn was used to try to enable a warning that this version
of subdirmk does not understand. (Note that an attempt to
local+global
single-char-var
unknown-warning
+ broken-var-ref
);
our %warn_ena = @warn_ena_dfl;
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);
${eval ${call some-macro, 42, $$x, { $(foreach something) } }}
+$TOP_FBAR
+
# doctests:
# Suffix in .
&${ some-macro, 42, $x, { &$- $(foreach something) } }
+$&FBAR
+
# doctests:
&:include &doctests.sd.mk
subdirmk: warning (unknown-warning): ./Prefix.sd.mk:2: unknown warning many-requests-for-unknown-warning requested
subdirmk: warning (single-char-var): ./Dir.sd.mk:8: possibly confusing unbracketed single-char $-expansion
+subdirmk: warning (broken-var-ref): ./Dir.sd.mk:19: broken $&... expansion; you probably meant &$
subdirmk: warning (local+global): saw both WARN and &WARN
saw WARN at ./Dir.sd.mk:6
saw WARN at ./Dir.sd.mk:9