Module Name: src Committed By: rillig Date: Mon Nov 2 22:59:49 UTC 2020
Modified Files: src/usr.bin/make/unit-tests: varname.exp varname.mk Log Message: make(1): document test for parsing of variable assignments To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/usr.bin/make/unit-tests/varname.exp \ src/usr.bin/make/unit-tests/varname.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/varname.exp diff -u src/usr.bin/make/unit-tests/varname.exp:1.7 src/usr.bin/make/unit-tests/varname.exp:1.8 --- src/usr.bin/make/unit-tests/varname.exp:1.7 Mon Nov 2 22:46:52 2020 +++ src/usr.bin/make/unit-tests/varname.exp Mon Nov 2 22:59:48 2020 @@ -14,11 +14,9 @@ Var_Parse: ${:UVAR\(\(\(}= try2 with VAR 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 Index: src/usr.bin/make/unit-tests/varname.mk diff -u src/usr.bin/make/unit-tests/varname.mk:1.7 src/usr.bin/make/unit-tests/varname.mk:1.8 --- src/usr.bin/make/unit-tests/varname.mk:1.7 Mon Nov 2 22:44:29 2020 +++ src/usr.bin/make/unit-tests/varname.mk Mon Nov 2 22:59:48 2020 @@ -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 @@ ${VARNAME}= 3 open parentheses # 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