Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make/unit-tests make(1): document test for parsing o...



details:   https://anonhg.NetBSD.org/src/rev/bd3ab935ac1b
branches:  trunk
changeset: 956635:bd3ab935ac1b
user:      rillig <rillig%NetBSD.org@localhost>
date:      Mon Nov 02 22:59:48 2020 +0000

description:
make(1): document test for parsing of variable assignments

diffstat:

 usr.bin/make/unit-tests/varname.exp |   8 +++-----
 usr.bin/make/unit-tests/varname.mk  |  12 ++++++++++--
 2 files changed, 13 insertions(+), 7 deletions(-)

diffs (45 lines):

diff -r d5b36fc21341 -r bd3ab935ac1b usr.bin/make/unit-tests/varname.exp
--- a/usr.bin/make/unit-tests/varname.exp       Mon Nov 02 22:58:51 2020 +0000
+++ b/usr.bin/make/unit-tests/varname.exp       Mon Nov 02 22:59:48 2020 +0000
@@ -14,11 +14,9 @@
 Applying ${:U...} to "" (VARE_UNDEFERR|VARE_WANTRES, none, VEF_UNDEF)
 Result of ${:UVAR\(\(\(} is "VAR\(\(\(" (VARE_UNDEFERR|VARE_WANTRES, none, VEF_UNDEF|VEF_DEF)
 Global:.ALLTARGETS =  VAR(((=) VAR\(\(\(=
-make: "varname.mk" line 31: Need an operator
-Var_Parse: ${:UVAR\(\(\(}=     try3 with VARE_UNDEFERR|VARE_WANTRES
-Applying ${:U...} to "" (VARE_UNDEFERR|VARE_WANTRES, none, VEF_UNDEF)
-Result of ${:UVAR\(\(\(} is "VAR\(\(\(" (VARE_UNDEFERR|VARE_WANTRES, none, VEF_UNDEF|VEF_DEF)
-make: "varname.mk" line 32: Need an operator
+make: "varname.mk" line 35: Need an operator
+Var_Parse: ${VARNAME} with VARE_WANTRES
+Global:VAR((( = try3
 Global:.MAKEFLAGS =  -r -k -d v -d
 Global:.MAKEFLAGS =  -r -k -d v -d 0
 make: Fatal errors encountered -- cannot continue
diff -r d5b36fc21341 -r bd3ab935ac1b usr.bin/make/unit-tests/varname.mk
--- a/usr.bin/make/unit-tests/varname.mk        Mon Nov 02 22:58:51 2020 +0000
+++ b/usr.bin/make/unit-tests/varname.mk        Mon Nov 02 22:59:48 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: varname.mk,v 1.7 2020/11/02 22:44:29 rillig Exp $
+# $NetBSD: varname.mk,v 1.8 2020/11/02 22:59:48 rillig Exp $
 #
 # Tests for special variables, such as .MAKE or .PARSEDIR.
 # And for variable names in general.
@@ -28,8 +28,16 @@
 # balanced.  At the end of the line, there are still 3 levels open, which
 # means the variable name is not finished.
 ${:UVAR(((}=   try1
+# On the left-hand side of a variable assignments, the backslash is not parsed
+# as an escape character, therefore the parentheses still count to the nesting
+# level, which at the end of the line is still 3.  Therefore this is not a
+# variable assignment as well.
 ${:UVAR\(\(\(}=        try2
-${:UVAR\(\(\(}=        try3
+# To assign to a variable with an arbitrary name, the variable name has to
+# come from an external source, not the text that is parsed in the assignment
+# itself.  This is exactly the reason why further above, the indirect
+# ${VARNAME} works, while all other attempts fail.
+${VARNAME}=    try3
 
 .MAKEFLAGS: -d0
 



Home | Main Index | Thread Index | Old Index