Module Name: src
Committed By: rillig
Date: Mon Apr 5 13:14:55 UTC 2021
Modified Files:
src/usr.bin/make: var.c
src/usr.bin/make/unit-tests: directive-export-impl.exp
directive-unexport-env.exp var-eval-short.exp var-op-append.exp
vardebug.exp varmod-assign.exp varmod-defined.exp
varmod-indirect.exp varmod-match-escape.exp varname-empty.exp
varname.exp
Log Message:
make: be more verbose in -dv debug logging
The previous log output was too brief to be understandable. Give more
hints by describing each part of the expression when evaluating a
modifier. Distinguish between parse-only mode and eval mode since in
parse-only mode most of the details are irrelevant.
To generate a diff of this commit:
cvs rdiff -u -r1.908 -r1.909 src/usr.bin/make/var.c
cvs rdiff -u -r1.9 -r1.10 \
src/usr.bin/make/unit-tests/directive-export-impl.exp
cvs rdiff -u -r1.7 -r1.8 \
src/usr.bin/make/unit-tests/directive-unexport-env.exp \
src/usr.bin/make/unit-tests/var-op-append.exp
cvs rdiff -u -r1.11 -r1.12 src/usr.bin/make/unit-tests/var-eval-short.exp \
src/usr.bin/make/unit-tests/varname-empty.exp
cvs rdiff -u -r1.20 -r1.21 src/usr.bin/make/unit-tests/vardebug.exp
cvs rdiff -u -r1.12 -r1.13 src/usr.bin/make/unit-tests/varmod-assign.exp
cvs rdiff -u -r1.6 -r1.7 src/usr.bin/make/unit-tests/varmod-defined.exp
cvs rdiff -u -r1.15 -r1.16 src/usr.bin/make/unit-tests/varmod-indirect.exp
cvs rdiff -u -r1.10 -r1.11 \
src/usr.bin/make/unit-tests/varmod-match-escape.exp
cvs rdiff -u -r1.14 -r1.15 src/usr.bin/make/unit-tests/varname.exp
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/var.c
diff -u src/usr.bin/make/var.c:1.908 src/usr.bin/make/var.c:1.909
--- src/usr.bin/make/var.c:1.908 Mon Apr 5 12:51:35 2021
+++ src/usr.bin/make/var.c Mon Apr 5 13:14:54 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: var.c,v 1.908 2021/04/05 12:51:35 rillig Exp $ */
+/* $NetBSD: var.c,v 1.909 2021/04/05 13:14:54 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -140,7 +140,7 @@
#include "metachar.h"
/* "@(#)var.c 8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: var.c,v 1.908 2021/04/05 12:51:35 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.909 2021/04/05 13:14:54 rillig Exp $");
/*
* Variables are defined using one of the VAR=value assignments. Their
@@ -3661,11 +3661,20 @@ LogBeforeApply(const ModChain *ch, const
const Expr *expr = ch->expr;
bool is_single_char = mod[0] != '\0' && IsDelimiter(mod[1], ch);
- /* At this point, only the first character of the modifier can
- * be used since the end of the modifier is not yet known. */
- debug_printf("Applying ${%s:%c%s} to \"%s\" (%s, %s)\n",
- expr->name, mod[0], is_single_char ? "" : "...",
- expr->value.str,
+ /*
+ * At this point, only the first character of the modifier can
+ * be used since the end of the modifier is not yet known.
+ */
+
+ if (!Expr_ShouldEval(expr)) {
+ debug_printf("Parsing modifier ${%s:%c%s}\n",
+ expr->name, mod[0], is_single_char ? "" : "...");
+ return;
+ }
+
+ debug_printf(
+ "Evaluating modifier ${%s:%c%s} on value \"%s\" (%s, %s)\n",
+ expr->name, mod[0], is_single_char ? "" : "...", expr->value.str,
VarEvalMode_Name[expr->emode],
ExprDefined_Name[expr->defined]);
}
Index: src/usr.bin/make/unit-tests/directive-export-impl.exp
diff -u src/usr.bin/make/unit-tests/directive-export-impl.exp:1.9 src/usr.bin/make/unit-tests/directive-export-impl.exp:1.10
--- src/usr.bin/make/unit-tests/directive-export-impl.exp:1.9 Mon Apr 5 12:51:35 2021
+++ src/usr.bin/make/unit-tests/directive-export-impl.exp Mon Apr 5 13:14:55 2021
@@ -5,19 +5,19 @@ Global:.MAKE.EXPORTED = UT_VAR
ParseReadLine (32): ': ${UT_VAR:N*}'
Var_Parse: ${UT_VAR:N*} (eval-defined)
Var_Parse: ${REF}> (eval-defined)
-Applying ${UT_VAR:N...} to "<>" (eval-defined, regular)
+Evaluating modifier ${UT_VAR:N...} on value "<>" (eval-defined, regular)
Pattern for ':N' is "*"
ModifyWords: split "<>" into 1 words
Result of ${UT_VAR:N*} is "" (eval-defined, regular)
ParseDependency(: )
CondParser_Eval: ${:!echo "\$UT_VAR"!} != "<>"
Var_Parse: ${:!echo "\$UT_VAR"!} != "<>" (eval-defined)
-Applying ${:!...} to "" (eval-defined, undefined)
+Evaluating modifier ${:!...} on value "" (eval-defined, undefined)
Modifier part: "echo "$UT_VAR""
Var_Parse: ${.MAKE.EXPORTED:O:u} (eval)
-Applying ${.MAKE.EXPORTED:O} to "UT_VAR" (eval, regular)
+Evaluating modifier ${.MAKE.EXPORTED:O} on value "UT_VAR" (eval, regular)
Result of ${.MAKE.EXPORTED:O} is "UT_VAR" (eval, regular)
-Applying ${.MAKE.EXPORTED:u} to "UT_VAR" (eval, regular)
+Evaluating modifier ${.MAKE.EXPORTED:u} on value "UT_VAR" (eval, regular)
Result of ${.MAKE.EXPORTED:u} is "UT_VAR" (eval, regular)
Var_Parse: ${UT_VAR} (eval)
Var_Parse: ${REF}> (eval)
@@ -26,7 +26,7 @@ lhs = "<>", rhs = "<>", op = !=
ParseReadLine (50): ': ${UT_VAR:N*}'
Var_Parse: ${UT_VAR:N*} (eval-defined)
Var_Parse: ${REF}> (eval-defined)
-Applying ${UT_VAR:N...} to "<>" (eval-defined, regular)
+Evaluating modifier ${UT_VAR:N...} on value "<>" (eval-defined, regular)
Pattern for ':N' is "*"
ModifyWords: split "<>" into 1 words
Result of ${UT_VAR:N*} is "" (eval-defined, regular)
@@ -35,12 +35,12 @@ ParseReadLine (54): 'REF= defined'
Global:REF = defined
CondParser_Eval: ${:!echo "\$UT_VAR"!} != "<defined>"
Var_Parse: ${:!echo "\$UT_VAR"!} != "<defined>" (eval-defined)
-Applying ${:!...} to "" (eval-defined, undefined)
+Evaluating modifier ${:!...} on value "" (eval-defined, undefined)
Modifier part: "echo "$UT_VAR""
Var_Parse: ${.MAKE.EXPORTED:O:u} (eval)
-Applying ${.MAKE.EXPORTED:O} to "UT_VAR" (eval, regular)
+Evaluating modifier ${.MAKE.EXPORTED:O} on value "UT_VAR" (eval, regular)
Result of ${.MAKE.EXPORTED:O} is "UT_VAR" (eval, regular)
-Applying ${.MAKE.EXPORTED:u} to "UT_VAR" (eval, regular)
+Evaluating modifier ${.MAKE.EXPORTED:u} on value "UT_VAR" (eval, regular)
Result of ${.MAKE.EXPORTED:u} is "UT_VAR" (eval, regular)
Var_Parse: ${UT_VAR} (eval)
Var_Parse: ${REF}> (eval)
Index: src/usr.bin/make/unit-tests/directive-unexport-env.exp
diff -u src/usr.bin/make/unit-tests/directive-unexport-env.exp:1.7 src/usr.bin/make/unit-tests/directive-unexport-env.exp:1.8
--- src/usr.bin/make/unit-tests/directive-unexport-env.exp:1.7 Sat Apr 3 22:02:59 2021
+++ src/usr.bin/make/unit-tests/directive-unexport-env.exp Mon Apr 5 13:14:55 2021
@@ -5,9 +5,9 @@ Global:UT_UNEXPORTED = value
Global:.MAKE.EXPORTED = UT_EXPORTED
make: "directive-unexport-env.mk" line 21: The directive .unexport-env does not take arguments
Var_Parse: ${.MAKE.EXPORTED:O:u} (eval)
-Applying ${.MAKE.EXPORTED:O} to "UT_EXPORTED" (eval, regular)
+Evaluating modifier ${.MAKE.EXPORTED:O} on value "UT_EXPORTED" (eval, regular)
Result of ${.MAKE.EXPORTED:O} is "UT_EXPORTED" (eval, regular)
-Applying ${.MAKE.EXPORTED:u} to "UT_EXPORTED" (eval, regular)
+Evaluating modifier ${.MAKE.EXPORTED:u} on value "UT_EXPORTED" (eval, regular)
Result of ${.MAKE.EXPORTED:u} is "UT_EXPORTED" (eval, regular)
Unexporting "UT_EXPORTED"
Global:delete .MAKE.EXPORTED
Index: src/usr.bin/make/unit-tests/var-op-append.exp
diff -u src/usr.bin/make/unit-tests/var-op-append.exp:1.7 src/usr.bin/make/unit-tests/var-op-append.exp:1.8
--- src/usr.bin/make/unit-tests/var-op-append.exp:1.7 Sat Apr 3 22:02:59 2021
+++ src/usr.bin/make/unit-tests/var-op-append.exp Mon Apr 5 13:14:55 2021
@@ -1,5 +1,5 @@
Var_Parse: ${:U\$\$\$\$\$\$\$\$} (eval)
-Applying ${:U...} to "" (eval, undefined)
+Evaluating modifier ${:U...} on value "" (eval, undefined)
Result of ${:U\$\$\$\$\$\$\$\$} is "$$$$$$$$" (eval, defined)
Global:VAR.$$$$$$$$ = dollars
Global:.MAKEFLAGS = -r -k -d v -d
Index: src/usr.bin/make/unit-tests/var-eval-short.exp
diff -u src/usr.bin/make/unit-tests/var-eval-short.exp:1.11 src/usr.bin/make/unit-tests/var-eval-short.exp:1.12
--- src/usr.bin/make/unit-tests/var-eval-short.exp:1.11 Sun Apr 4 13:35:26 2021
+++ src/usr.bin/make/unit-tests/var-eval-short.exp Mon Apr 5 13:14:55 2021
@@ -6,7 +6,7 @@ make: "var-eval-short.mk" line 93: Inval
make: "var-eval-short.mk" line 93: Malformed conditional (0 && ${:Uword:localtime=${FAIL}})
CondParser_Eval: 0 && ${0:?${FAIL}then:${FAIL}else}
Var_Parse: ${0:?${FAIL}then:${FAIL}else} (parse-only)
-Applying ${0:?...} to "" (parse-only, undefined)
+Parsing modifier ${0:?...}
Modifier part: "${FAIL}then"
Modifier part: "${FAIL}else"
Result of ${0:?${FAIL}then:${FAIL}else} is "" (parse-only, defined)
@@ -14,9 +14,9 @@ ParseReadLine (158): 'DEFINED= defined'
Global:DEFINED = defined
CondParser_Eval: 0 && ${DEFINED:L:?${FAIL}then:${FAIL}else}
Var_Parse: ${DEFINED:L:?${FAIL}then:${FAIL}else} (parse-only)
-Applying ${DEFINED:L} to "defined" (parse-only, regular)
+Parsing modifier ${DEFINED:L}
Result of ${DEFINED:L} is "defined" (parse-only, regular)
-Applying ${DEFINED:?...} to "defined" (parse-only, regular)
+Parsing modifier ${DEFINED:?...}
Modifier part: "${FAIL}then"
Modifier part: "${FAIL}else"
Result of ${DEFINED:?${FAIL}then:${FAIL}else} is "defined" (parse-only, regular)
Index: src/usr.bin/make/unit-tests/varname-empty.exp
diff -u src/usr.bin/make/unit-tests/varname-empty.exp:1.11 src/usr.bin/make/unit-tests/varname-empty.exp:1.12
--- src/usr.bin/make/unit-tests/varname-empty.exp:1.11 Sat Apr 3 22:02:59 2021
+++ src/usr.bin/make/unit-tests/varname-empty.exp Mon Apr 5 13:14:55 2021
@@ -1,11 +1,11 @@
Var_Parse: ${:U} (eval)
-Applying ${:U} to "" (eval, undefined)
+Evaluating modifier ${:U} on value "" (eval, undefined)
Result of ${:U} is "" (eval, defined)
Var_Set("${:U}", "cmdline-u", ...) name expands to empty string - ignored
Var_Set("", "cmdline-plain", ...) name expands to empty string - ignored
Global:.CURDIR = <curdir>
Var_Parse: ${MAKE_OBJDIR_CHECK_WRITABLE:U} (eval)
-Applying ${MAKE_OBJDIR_CHECK_WRITABLE:U} to "" (eval, undefined)
+Evaluating modifier ${MAKE_OBJDIR_CHECK_WRITABLE:U} on value "" (eval, undefined)
Result of ${MAKE_OBJDIR_CHECK_WRITABLE:U} is "" (eval, defined)
Global:.OBJDIR = <curdir>
Global:delete .PATH (not found)
@@ -24,21 +24,21 @@ Var_Set("", "", ...) name expands to emp
Var_Set("", "subst", ...) name expands to empty string - ignored
Var_Set("", "shell-output", ...) name expands to empty string - ignored
Var_Parse: ${:Ufallback} != "fallback" (eval-defined)
-Applying ${:U...} to "" (eval-defined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-defined, undefined)
Result of ${:Ufallback} is "fallback" (eval-defined, defined)
Var_Parse: ${:U} (eval)
-Applying ${:U} to "" (eval, undefined)
+Evaluating modifier ${:U} on value "" (eval, undefined)
Result of ${:U} is "" (eval, defined)
Var_Set("${:U}", "assigned indirectly", ...) name expands to empty string - ignored
Var_Parse: ${:Ufallback} != "fallback" (eval-defined)
-Applying ${:U...} to "" (eval-defined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-defined, undefined)
Result of ${:Ufallback} is "fallback" (eval-defined, defined)
Var_Parse: ${:U} (eval)
-Applying ${:U} to "" (eval, undefined)
+Evaluating modifier ${:U} on value "" (eval, undefined)
Result of ${:U} is "" (eval, defined)
Var_Append("${:U}", "appended indirectly", ...) name expands to empty string - ignored
Var_Parse: ${:Ufallback} != "fallback" (eval-defined)
-Applying ${:U...} to "" (eval-defined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-defined, undefined)
Result of ${:Ufallback} is "fallback" (eval-defined, defined)
Global:.MAKEFLAGS = -r -d v -d
Global:.MAKEFLAGS = -r -d v -d 0
Index: src/usr.bin/make/unit-tests/vardebug.exp
diff -u src/usr.bin/make/unit-tests/vardebug.exp:1.20 src/usr.bin/make/unit-tests/vardebug.exp:1.21
--- src/usr.bin/make/unit-tests/vardebug.exp:1.20 Mon Apr 5 12:51:35 2021
+++ src/usr.bin/make/unit-tests/vardebug.exp Mon Apr 5 13:14:55 2021
@@ -6,11 +6,11 @@ Global:VAR = overwritten
Global:delete VAR
Global:delete VAR (not found)
Var_Parse: ${:U} (eval)
-Applying ${:U} to "" (eval, undefined)
+Evaluating modifier ${:U} on value "" (eval, undefined)
Result of ${:U} is "" (eval, defined)
Var_Set("${:U}", "empty name", ...) name expands to empty string - ignored
Var_Parse: ${:U} (eval)
-Applying ${:U} to "" (eval, undefined)
+Evaluating modifier ${:U} on value "" (eval, undefined)
Result of ${:U} is "" (eval, defined)
Var_Append("${:U}", "empty name", ...) name expands to empty string - ignored
Global:FROM_CMDLINE = overwritten ignored!
@@ -18,54 +18,54 @@ Global:VAR = 1
Global:VAR = 1 2
Global:VAR = 1 2 3
Var_Parse: ${VAR:M[2]} (eval-defined)
-Applying ${VAR:M...} to "1 2 3" (eval-defined, regular)
+Evaluating modifier ${VAR:M...} on value "1 2 3" (eval-defined, regular)
Pattern for ':M' is "[2]"
ModifyWords: split "1 2 3" into 3 words
Result of ${VAR:M[2]} is "2" (eval-defined, regular)
Var_Parse: ${VAR:N[2]} (eval-defined)
-Applying ${VAR:N...} to "1 2 3" (eval-defined, regular)
+Evaluating modifier ${VAR:N...} on value "1 2 3" (eval-defined, regular)
Pattern for ':N' is "[2]"
ModifyWords: split "1 2 3" into 3 words
Result of ${VAR:N[2]} is "1 3" (eval-defined, regular)
Var_Parse: ${VAR:S,2,two,} (eval-defined)
-Applying ${VAR:S...} to "1 2 3" (eval-defined, regular)
+Evaluating modifier ${VAR:S...} on value "1 2 3" (eval-defined, regular)
Modifier part: "2"
Modifier part: "two"
ModifyWords: split "1 2 3" into 3 words
Result of ${VAR:S,2,two,} is "1 two 3" (eval-defined, regular)
Var_Parse: ${VAR:Q} (eval-defined)
-Applying ${VAR:Q} to "1 2 3" (eval-defined, regular)
+Evaluating modifier ${VAR:Q} on value "1 2 3" (eval-defined, regular)
Result of ${VAR:Q} is "1\ 2\ 3" (eval-defined, regular)
Var_Parse: ${VAR:tu:tl:Q} (eval-defined)
-Applying ${VAR:t...} to "1 2 3" (eval-defined, regular)
+Evaluating modifier ${VAR:t...} on value "1 2 3" (eval-defined, regular)
Result of ${VAR:tu} is "1 2 3" (eval-defined, regular)
-Applying ${VAR:t...} to "1 2 3" (eval-defined, regular)
+Evaluating modifier ${VAR:t...} on value "1 2 3" (eval-defined, regular)
Result of ${VAR:tl} is "1 2 3" (eval-defined, regular)
-Applying ${VAR:Q} to "1 2 3" (eval-defined, regular)
+Evaluating modifier ${VAR:Q} on value "1 2 3" (eval-defined, regular)
Result of ${VAR:Q} is "1\ 2\ 3" (eval-defined, regular)
Var_Parse: ${:Uvalue:${:UM*e}:Mvalu[e]} (eval-defined)
-Applying ${:U...} to "" (eval-defined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-defined, undefined)
Result of ${:Uvalue} is "value" (eval-defined, defined)
Var_Parse: ${:UM*e}:Mvalu[e]} (eval-defined)
-Applying ${:U...} to "" (eval-defined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-defined, undefined)
Result of ${:UM*e} is "M*e" (eval-defined, defined)
Indirect modifier "M*e" from "${:UM*e}"
-Applying ${:M...} to "value" (eval-defined, defined)
+Evaluating modifier ${:M...} on value "value" (eval-defined, defined)
Pattern for ':M' is "*e"
ModifyWords: split "value" into 1 words
Result of ${:M*e} is "value" (eval-defined, defined)
-Applying ${:M...} to "value" (eval-defined, defined)
+Evaluating modifier ${:M...} on value "value" (eval-defined, defined)
Pattern for ':M' is "valu[e]"
ModifyWords: split "value" into 1 words
Result of ${:Mvalu[e]} is "value" (eval-defined, defined)
Var_Parse: ${:UVAR} (eval)
-Applying ${:U...} to "" (eval, undefined)
+Evaluating modifier ${:U...} on value "" (eval, undefined)
Result of ${:UVAR} is "VAR" (eval, defined)
Global:delete VAR
Var_Parse: ${:Uvariable:unknown} (eval-defined)
-Applying ${:U...} to "" (eval-defined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-defined, undefined)
Result of ${:Uvariable} is "variable" (eval-defined, defined)
-Applying ${:u...} to "variable" (eval-defined, defined)
+Evaluating modifier ${:u...} on value "variable" (eval-defined, defined)
make: "vardebug.mk" line 44: Unknown modifier "unknown"
Result of ${:unknown} is error (eval-defined, defined)
make: "vardebug.mk" line 44: Malformed conditional (${:Uvariable:unknown})
Index: src/usr.bin/make/unit-tests/varmod-assign.exp
diff -u src/usr.bin/make/unit-tests/varmod-assign.exp:1.12 src/usr.bin/make/unit-tests/varmod-assign.exp:1.13
--- src/usr.bin/make/unit-tests/varmod-assign.exp:1.12 Sat Apr 3 22:02:59 2021
+++ src/usr.bin/make/unit-tests/varmod-assign.exp Mon Apr 5 13:14:55 2021
@@ -4,7 +4,7 @@ Var_Parse: ${VARNAME} (eval)
Global:VAR.${param} = initial-value
Var_Parse: ${${VARNAME}::=assigned-value} (eval-defined)
Var_Parse: ${VARNAME}::=assigned-value} (eval-defined)
-Applying ${VAR.${param}::...} to "initial-value" (eval-defined, regular)
+Evaluating modifier ${VAR.${param}::...} on value "initial-value" (eval-defined, regular)
Modifier part: "assigned-value"
Global:VAR.${param} = assigned-value
Result of ${VAR.${param}::=assigned-value} is "" (eval-defined, regular)
Index: src/usr.bin/make/unit-tests/varmod-defined.exp
diff -u src/usr.bin/make/unit-tests/varmod-defined.exp:1.6 src/usr.bin/make/unit-tests/varmod-defined.exp:1.7
--- src/usr.bin/make/unit-tests/varmod-defined.exp:1.6 Sat Apr 3 22:02:59 2021
+++ src/usr.bin/make/unit-tests/varmod-defined.exp Mon Apr 5 13:14:55 2021
@@ -3,12 +3,12 @@ Global:VAR =
Var_Parse: ${8_DOLLARS} (eval-keep-dollar-and-undefined)
Global:VAR = $$$$$$$$
Var_Parse: ${VAR:D${8_DOLLARS}} (eval-keep-dollar-and-undefined)
-Applying ${VAR:D...} to "$$$$$$$$" (eval-keep-dollar-and-undefined, regular)
+Evaluating modifier ${VAR:D...} on value "$$$$$$$$" (eval-keep-dollar-and-undefined, regular)
Var_Parse: ${8_DOLLARS}} (eval-keep-dollar-and-undefined)
Result of ${VAR:D${8_DOLLARS}} is "$$$$$$$$" (eval-keep-dollar-and-undefined, regular)
Global:VAR = $$$$$$$$
Var_Parse: ${VAR:@var@${8_DOLLARS}@} (eval-keep-dollar-and-undefined)
-Applying ${VAR:@...} to "$$$$$$$$" (eval-keep-dollar-and-undefined, regular)
+Evaluating modifier ${VAR:@...} on value "$$$$$$$$" (eval-keep-dollar-and-undefined, regular)
Modifier part: "var"
Modifier part: "${8_DOLLARS}"
ModifyWords: split "$$$$$$$$" into 1 words
Index: src/usr.bin/make/unit-tests/varmod-indirect.exp
diff -u src/usr.bin/make/unit-tests/varmod-indirect.exp:1.15 src/usr.bin/make/unit-tests/varmod-indirect.exp:1.16
--- src/usr.bin/make/unit-tests/varmod-indirect.exp:1.15 Sun Apr 4 10:13:09 2021
+++ src/usr.bin/make/unit-tests/varmod-indirect.exp Mon Apr 5 13:14:55 2021
@@ -17,39 +17,39 @@ Global:_ = before ${UNDEF} after
ParseReadLine (169): '_:= before ${UNDEF:${:US,a,a,}} after'
Var_Parse: ${UNDEF:${:US,a,a,}} after (eval-keep-dollar-and-undefined)
Var_Parse: ${:US,a,a,}} after (eval-keep-dollar-and-undefined)
-Applying ${:U...} to "" (eval-keep-dollar-and-undefined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-keep-dollar-and-undefined, undefined)
Result of ${:US,a,a,} is "S,a,a," (eval-keep-dollar-and-undefined, defined)
Indirect modifier "S,a,a," from "${:US,a,a,}"
-Applying ${UNDEF:S...} to "" (eval-keep-dollar-and-undefined, undefined)
+Evaluating modifier ${UNDEF:S...} on value "" (eval-keep-dollar-and-undefined, undefined)
Modifier part: "a"
Modifier part: "a"
ModifyWords: split "" into 1 words
Result of ${UNDEF:S,a,a,} is "" (eval-keep-dollar-and-undefined, undefined)
Var_Parse: ${:US,a,a,}} after (eval-keep-dollar-and-undefined)
-Applying ${:U...} to "" (eval-keep-dollar-and-undefined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-keep-dollar-and-undefined, undefined)
Result of ${:US,a,a,} is "S,a,a," (eval-keep-dollar-and-undefined, defined)
Global:_ = before ${UNDEF:S,a,a,} after
ParseReadLine (179): '_:= before ${UNDEF:${:U}} after'
Var_Parse: ${UNDEF:${:U}} after (eval-keep-dollar-and-undefined)
Var_Parse: ${:U}} after (eval-keep-dollar-and-undefined)
-Applying ${:U} to "" (eval-keep-dollar-and-undefined, undefined)
+Evaluating modifier ${:U} on value "" (eval-keep-dollar-and-undefined, undefined)
Result of ${:U} is "" (eval-keep-dollar-and-undefined, defined)
Indirect modifier "" from "${:U}"
Var_Parse: ${:U}} after (eval-keep-dollar-and-undefined)
-Applying ${:U} to "" (eval-keep-dollar-and-undefined, undefined)
+Evaluating modifier ${:U} on value "" (eval-keep-dollar-and-undefined, undefined)
Result of ${:U} is "" (eval-keep-dollar-and-undefined, defined)
Global:_ = before ${UNDEF:} after
ParseReadLine (184): '_:= before ${UNDEF:${:UZ}} after'
Var_Parse: ${UNDEF:${:UZ}} after (eval-keep-dollar-and-undefined)
Var_Parse: ${:UZ}} after (eval-keep-dollar-and-undefined)
-Applying ${:U...} to "" (eval-keep-dollar-and-undefined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-keep-dollar-and-undefined, undefined)
Result of ${:UZ} is "Z" (eval-keep-dollar-and-undefined, defined)
Indirect modifier "Z" from "${:UZ}"
-Applying ${UNDEF:Z} to "" (eval-keep-dollar-and-undefined, undefined)
+Evaluating modifier ${UNDEF:Z} on value "" (eval-keep-dollar-and-undefined, undefined)
make: "varmod-indirect.mk" line 184: Unknown modifier "Z"
Result of ${UNDEF:Z} is error (eval-keep-dollar-and-undefined, undefined)
Var_Parse: ${:UZ}} after (eval-keep-dollar-and-undefined)
-Applying ${:U...} to "" (eval-keep-dollar-and-undefined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-keep-dollar-and-undefined, undefined)
Result of ${:UZ} is "Z" (eval-keep-dollar-and-undefined, defined)
Global:_ = before ${UNDEF:Z} after
ParseReadLine (186): '.MAKEFLAGS: -d0'
Index: src/usr.bin/make/unit-tests/varmod-match-escape.exp
diff -u src/usr.bin/make/unit-tests/varmod-match-escape.exp:1.10 src/usr.bin/make/unit-tests/varmod-match-escape.exp:1.11
--- src/usr.bin/make/unit-tests/varmod-match-escape.exp:1.10 Mon Apr 5 12:51:35 2021
+++ src/usr.bin/make/unit-tests/varmod-match-escape.exp Mon Apr 5 13:14:55 2021
@@ -1,17 +1,17 @@
Global:SPECIALS = \: : \\ * \*
CondParser_Eval: ${SPECIALS:M${:U}\:} != ${SPECIALS:M\:${:U}}
Var_Parse: ${SPECIALS:M${:U}\:} != ${SPECIALS:M\:${:U}} (eval-defined)
-Applying ${SPECIALS:M...} to "\: : \\ * \*" (eval-defined, regular)
+Evaluating modifier ${SPECIALS:M...} on value "\: : \\ * \*" (eval-defined, regular)
Var_Parse: ${:U}\: (eval-defined)
-Applying ${:U} to "" (eval-defined, undefined)
+Evaluating modifier ${:U} on value "" (eval-defined, undefined)
Result of ${:U} is "" (eval-defined, defined)
Pattern for ':M' is "\:"
ModifyWords: split "\: : \\ * \*" into 5 words
Result of ${SPECIALS:M${:U}\:} is ":" (eval-defined, regular)
Var_Parse: ${SPECIALS:M\:${:U}} (eval-defined)
-Applying ${SPECIALS:M...} to "\: : \\ * \*" (eval-defined, regular)
+Evaluating modifier ${SPECIALS:M...} on value "\: : \\ * \*" (eval-defined, regular)
Var_Parse: ${:U} (eval-defined)
-Applying ${:U} to "" (eval-defined, undefined)
+Evaluating modifier ${:U} on value "" (eval-defined, undefined)
Result of ${:U} is "" (eval-defined, defined)
Pattern for ':M' is ":"
ModifyWords: split "\: : \\ * \*" into 5 words
@@ -20,17 +20,17 @@ lhs = ":", rhs = ":", op = !=
Global:VALUES = : :: :\:
CondParser_Eval: ${VALUES:M\:${:U\:}} != ${VALUES:M${:U\:}\:}
Var_Parse: ${VALUES:M\:${:U\:}} != ${VALUES:M${:U\:}\:} (eval-defined)
-Applying ${VALUES:M...} to ": :: :\:" (eval-defined, regular)
+Evaluating modifier ${VALUES:M...} on value ": :: :\:" (eval-defined, regular)
Var_Parse: ${:U:} (eval-defined)
-Applying ${:U} to "" (eval-defined, undefined)
+Evaluating modifier ${:U} on value "" (eval-defined, undefined)
Result of ${:U} is "" (eval-defined, defined)
Pattern for ':M' is ":"
ModifyWords: split ": :: :\:" into 3 words
Result of ${VALUES:M\:${:U\:}} is ":" (eval-defined, regular)
Var_Parse: ${VALUES:M${:U\:}\:} (eval-defined)
-Applying ${VALUES:M...} to ": :: :\:" (eval-defined, regular)
+Evaluating modifier ${VALUES:M...} on value ": :: :\:" (eval-defined, regular)
Var_Parse: ${:U\:}\: (eval-defined)
-Applying ${:U...} to "" (eval-defined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-defined, undefined)
Result of ${:U\:} is ":" (eval-defined, defined)
Pattern for ':M' is ":\:"
ModifyWords: split ": :: :\:" into 3 words
Index: src/usr.bin/make/unit-tests/varname.exp
diff -u src/usr.bin/make/unit-tests/varname.exp:1.14 src/usr.bin/make/unit-tests/varname.exp:1.15
--- src/usr.bin/make/unit-tests/varname.exp:1.14 Sat Apr 3 22:02:59 2021
+++ src/usr.bin/make/unit-tests/varname.exp Mon Apr 5 13:14:55 2021
@@ -5,13 +5,13 @@ Var_Parse: ${VARNAME} (eval)
Global:VAR((( = 3 open parentheses
Var_Parse: ${VAR(((}}}}" != "3 open parentheses}}}" (eval)
Var_Parse: ${:UVAR(((}= try1 (eval-defined)
-Applying ${:U...} to "" (eval-defined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-defined, undefined)
Result of ${:UVAR(((} is "VAR(((" (eval-defined, defined)
Global:.ALLTARGETS = VAR(((=)
make: "varname.mk" line 30: No closing parenthesis in archive specification
make: "varname.mk" line 30: Error in archive specification: "VAR"
Var_Parse: ${:UVAR\(\(\(}= try2 (eval-defined)
-Applying ${:U...} to "" (eval-defined, undefined)
+Evaluating modifier ${:U...} on value "" (eval-defined, undefined)
Result of ${:UVAR\(\(\(} is "VAR\(\(\(" (eval-defined, defined)
Global:.ALLTARGETS = VAR(((=) VAR\(\(\(=
make: "varname.mk" line 35: Invalid line type