Module Name: src Committed By: rillig Date: Sat Feb 18 11:55:20 UTC 2023
Modified Files: src/usr.bin/make/unit-tests: varmod-loop.exp varmod-loop.mk Log Message: tests/make: document the modifier ':@var@body@' To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/usr.bin/make/unit-tests/varmod-loop.exp cvs rdiff -u -r1.22 -r1.23 src/usr.bin/make/unit-tests/varmod-loop.mk Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/unit-tests/varmod-loop.exp diff -u src/usr.bin/make/unit-tests/varmod-loop.exp:1.18 src/usr.bin/make/unit-tests/varmod-loop.exp:1.19 --- src/usr.bin/make/unit-tests/varmod-loop.exp:1.18 Tue Aug 23 21:13:46 2022 +++ src/usr.bin/make/unit-tests/varmod-loop.exp Sat Feb 18 11:55:20 2023 @@ -1,10 +1,10 @@ -Parsing line 78: USE_8_DOLLARS= ${:U1:@var@${8_DOLLARS}@} ${8_DOLLARS} $$$$$$$$ +Parsing line 91: USE_8_DOLLARS= ${:U1:@var@${8_DOLLARS}@} ${8_DOLLARS} $$$$$$$$ CondParser_Eval: ${USE_8_DOLLARS} != "\$\$\$\$ \$\$\$\$ \$\$\$\$" Comparing "$$$$ $$$$ $$$$" != "$$$$ $$$$ $$$$" -Parsing line 83: SUBST_CONTAINING_LOOP:= ${USE_8_DOLLARS} +Parsing line 96: SUBST_CONTAINING_LOOP:= ${USE_8_DOLLARS} CondParser_Eval: ${SUBST_CONTAINING_LOOP} != "\$\$ \$\$\$\$ \$\$\$\$" Comparing "$$ $$$$ $$$$" != "$$ $$$$ $$$$" -Parsing line 108: .MAKEFLAGS: -d0 +Parsing line 121: .MAKEFLAGS: -d0 ParseDependency(.MAKEFLAGS: -d0) :varname-overwriting-target: :x1y x2y x3y: :: mod-loop-dollar:1: Index: src/usr.bin/make/unit-tests/varmod-loop.mk diff -u src/usr.bin/make/unit-tests/varmod-loop.mk:1.22 src/usr.bin/make/unit-tests/varmod-loop.mk:1.23 --- src/usr.bin/make/unit-tests/varmod-loop.mk:1.22 Sat Feb 18 11:16:09 2023 +++ src/usr.bin/make/unit-tests/varmod-loop.mk Sat Feb 18 11:55:20 2023 @@ -1,6 +1,20 @@ -# $NetBSD: varmod-loop.mk,v 1.22 2023/02/18 11:16:09 rillig Exp $ +# $NetBSD: varmod-loop.mk,v 1.23 2023/02/18 11:55:20 rillig Exp $ # -# Tests for the :@var@...${var}...@ variable modifier. +# Tests for the expression modifier ':@var@body@', which replaces each word of +# the expression with the expanded body, which may contain references to the +# variable 'var'. For example, '${1 2 3:L:@word@<${word}>@}' encloses each +# word in angle quotes, resulting in '<1> <2> <3>'. +# +# The variable name can be chosen freely, except that it must not contain a +# '$'. For simplicity and readability, variable names should only use the +# characters 'A-Za-z0-9'. +# +# The body may contain subexpressions in the form '${...}' or '$(...)'. These +# subexpressions differ from everywhere else in makefiles in that the parser +# only scans '${...}' for balanced '{' and '}', likewise for '$(...)'. Any +# other '$' is left as-is during parsing. Later, when the body is expanded +# for each word, each '$$' is interpreted as a single '$', and the remaining +# '$' are interpreted as expressions, like when evaluating a regular variable. # Force the test results to be independent of the default value of this # setting, which is 'yes' for NetBSD's usr.bin/make but 'no' for the bmake @@ -19,7 +33,6 @@ varname-overwriting-target: @echo :$@: :${:U1 2 3:@\@@x${@}y@}: :$@: - # Demonstrate that it is possible to generate dollar signs using the # :@ modifier. #