Module Name:    src
Committed By:   rillig
Date:           Sun Jun  2 15:31:26 UTC 2024

Modified Files:
        src/usr.bin/make: arch.c compat.c cond.c for.c job.c main.c make.c
            make.h meta.c parse.c suff.c var.c
        src/usr.bin/make/unit-tests: cond-func-empty.mk dep-var.exp dep-var.mk
            parse-var.mk recursive.mk var-eval-short.exp varmod-ifelse.mk
            varmod-loop.mk varparse-errors.mk

Log Message:
make: sync VarEvalMode constant names with their debug log names


To generate a diff of this commit:
cvs rdiff -u -r1.218 -r1.219 src/usr.bin/make/arch.c
cvs rdiff -u -r1.257 -r1.258 src/usr.bin/make/compat.c
cvs rdiff -u -r1.364 -r1.365 src/usr.bin/make/cond.c
cvs rdiff -u -r1.180 -r1.181 src/usr.bin/make/for.c
cvs rdiff -u -r1.474 -r1.475 src/usr.bin/make/job.c
cvs rdiff -u -r1.623 -r1.624 src/usr.bin/make/main.c
cvs rdiff -u -r1.263 -r1.264 src/usr.bin/make/make.c
cvs rdiff -u -r1.337 -r1.338 src/usr.bin/make/make.h
cvs rdiff -u -r1.209 -r1.210 src/usr.bin/make/meta.c
cvs rdiff -u -r1.729 -r1.730 src/usr.bin/make/parse.c
cvs rdiff -u -r1.379 -r1.380 src/usr.bin/make/suff.c
cvs rdiff -u -r1.1118 -r1.1119 src/usr.bin/make/var.c
cvs rdiff -u -r1.24 -r1.25 src/usr.bin/make/unit-tests/cond-func-empty.mk
cvs rdiff -u -r1.6 -r1.7 src/usr.bin/make/unit-tests/dep-var.exp
cvs rdiff -u -r1.11 -r1.12 src/usr.bin/make/unit-tests/dep-var.mk
cvs rdiff -u -r1.9 -r1.10 src/usr.bin/make/unit-tests/parse-var.mk
cvs rdiff -u -r1.7 -r1.8 src/usr.bin/make/unit-tests/recursive.mk
cvs rdiff -u -r1.25 -r1.26 src/usr.bin/make/unit-tests/var-eval-short.exp \
    src/usr.bin/make/unit-tests/varmod-loop.mk
cvs rdiff -u -r1.28 -r1.29 src/usr.bin/make/unit-tests/varmod-ifelse.mk
cvs rdiff -u -r1.12 -r1.13 src/usr.bin/make/unit-tests/varparse-errors.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/arch.c
diff -u src/usr.bin/make/arch.c:1.218 src/usr.bin/make/arch.c:1.219
--- src/usr.bin/make/arch.c:1.218	Fri May 31 05:50:11 2024
+++ src/usr.bin/make/arch.c	Sun Jun  2 15:31:25 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: arch.c,v 1.218 2024/05/31 05:50:11 rillig Exp $	*/
+/*	$NetBSD: arch.c,v 1.219 2024/06/02 15:31:25 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -126,7 +126,7 @@
 #include "config.h"
 
 /*	"@(#)arch.c	8.2 (Berkeley) 1/2/94"	*/
-MAKE_RCSID("$NetBSD: arch.c,v 1.218 2024/05/31 05:50:11 rillig Exp $");
+MAKE_RCSID("$NetBSD: arch.c,v 1.219 2024/06/02 15:31:25 rillig Exp $");
 
 typedef struct List ArchList;
 typedef struct ListNode ArchListNode;
@@ -209,7 +209,8 @@ Arch_ParseArchive(char **pp, GNodeList *
 			bool isError;
 
 			/* XXX: is expanded twice: once here and once below */
-			result = Var_Parse(&nested_p, scope, VARE_UNDEFERR);
+			result = Var_Parse(&nested_p, scope,
+			    VARE_EVAL_DEFINED);
 			/* TODO: handle errors */
 			isError = result.str == var_Error;
 			FStr_Done(&result);
@@ -224,7 +225,7 @@ Arch_ParseArchive(char **pp, GNodeList *
 
 	spec[cp++ - spec] = '\0';
 	if (expandLib)
-		Var_Expand(&lib, scope, VARE_UNDEFERR);
+		Var_Expand(&lib, scope, VARE_EVAL_DEFINED);
 
 	for (;;) {
 		/*
@@ -248,7 +249,7 @@ Arch_ParseArchive(char **pp, GNodeList *
 				const char *nested_p = cp;
 
 				result = Var_Parse(&nested_p, scope,
-				    VARE_UNDEFERR);
+				    VARE_EVAL_DEFINED);
 				/* TODO: handle errors */
 				isError = result.str == var_Error;
 				FStr_Done(&result);
@@ -293,7 +294,7 @@ Arch_ParseArchive(char **pp, GNodeList *
 			char *p;
 			const char *unexpandedMem = mem.str;
 
-			Var_Expand(&mem, scope, VARE_UNDEFERR);
+			Var_Expand(&mem, scope, VARE_EVAL_DEFINED);
 
 			/*
 			 * Now form an archive spec and recurse to deal with

Index: src/usr.bin/make/compat.c
diff -u src/usr.bin/make/compat.c:1.257 src/usr.bin/make/compat.c:1.258
--- src/usr.bin/make/compat.c:1.257	Sat May 25 21:07:48 2024
+++ src/usr.bin/make/compat.c	Sun Jun  2 15:31:25 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat.c,v 1.257 2024/05/25 21:07:48 rillig Exp $	*/
+/*	$NetBSD: compat.c,v 1.258 2024/06/02 15:31:25 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -91,7 +91,7 @@
 #include "pathnames.h"
 
 /*	"@(#)compat.c	8.2 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: compat.c,v 1.257 2024/05/25 21:07:48 rillig Exp $");
+MAKE_RCSID("$NetBSD: compat.c,v 1.258 2024/06/02 15:31:25 rillig Exp $");
 
 static GNode *curTarg = NULL;
 static pid_t compatChild;
@@ -252,7 +252,7 @@ Compat_RunCommand(const char *cmdp, GNod
 	doIt = false;
 
 	EvalStack_Push(gn->name, NULL, NULL);
-	cmdStart = Var_Subst(cmd, gn, VARE_WANTRES);
+	cmdStart = Var_Subst(cmd, gn, VARE_EVAL);
 	EvalStack_Pop();
 	/* TODO: handle errors */
 

Index: src/usr.bin/make/cond.c
diff -u src/usr.bin/make/cond.c:1.364 src/usr.bin/make/cond.c:1.365
--- src/usr.bin/make/cond.c:1.364	Sat May 25 00:00:25 2024
+++ src/usr.bin/make/cond.c	Sun Jun  2 15:31:25 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cond.c,v 1.364 2024/05/25 00:00:25 rillig Exp $	*/
+/*	$NetBSD: cond.c,v 1.365 2024/06/02 15:31:25 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -91,7 +91,7 @@
 #include "dir.h"
 
 /*	"@(#)cond.c	8.2 (Berkeley) 1/2/94"	*/
-MAKE_RCSID("$NetBSD: cond.c,v 1.364 2024/05/25 00:00:25 rillig Exp $");
+MAKE_RCSID("$NetBSD: cond.c,v 1.365 2024/06/02 15:31:25 rillig Exp $");
 
 /*
  * Conditional expressions conform to this grammar:
@@ -222,8 +222,8 @@ ParseWord(const char **pp, bool doEval)
 			break;
 		if (ch == '$') {
 			VarEvalMode emode = doEval
-			    ? VARE_UNDEFERR
-			    : VARE_PARSE_ONLY;
+			    ? VARE_EVAL_DEFINED
+			    : VARE_PARSE;
 			/*
 			 * TODO: make Var_Parse complain about undefined
 			 * variables.
@@ -396,9 +396,9 @@ CondParser_StringExpr(CondParser *par, c
 	const char *p;
 	bool atStart;		/* true means an expression outside quotes */
 
-	emode = doEval && quoted ? VARE_WANTRES
-	    : doEval ? VARE_UNDEFERR
-	    : VARE_PARSE_ONLY;
+	emode = doEval && quoted ? VARE_EVAL
+	    : doEval ? VARE_EVAL_DEFINED
+	    : VARE_PARSE;
 
 	p = par->p;
 	atStart = p == start;
@@ -651,8 +651,7 @@ CondParser_FuncCallEmpty(CondParser *par
 		return false;
 
 	p--;			/* Make p[1] point to the '('. */
-	val = Var_Parse(&p, SCOPE_CMDLINE,
-	    doEval ? VARE_WANTRES : VARE_PARSE_ONLY);
+	val = Var_Parse(&p, SCOPE_CMDLINE, doEval ? VARE_EVAL : VARE_PARSE);
 	/* TODO: handle errors */
 
 	if (val.str == var_Error)

Index: src/usr.bin/make/for.c
diff -u src/usr.bin/make/for.c:1.180 src/usr.bin/make/for.c:1.181
--- src/usr.bin/make/for.c:1.180	Sat May 25 00:00:25 2024
+++ src/usr.bin/make/for.c	Sun Jun  2 15:31:25 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: for.c,v 1.180 2024/05/25 00:00:25 rillig Exp $	*/
+/*	$NetBSD: for.c,v 1.181 2024/06/02 15:31:25 rillig Exp $	*/
 
 /*
  * Copyright (c) 1992, The Regents of the University of California.
@@ -58,7 +58,7 @@
 #include "make.h"
 
 /*	"@(#)for.c	8.1 (Berkeley) 6/6/93"	*/
-MAKE_RCSID("$NetBSD: for.c,v 1.180 2024/05/25 00:00:25 rillig Exp $");
+MAKE_RCSID("$NetBSD: for.c,v 1.181 2024/06/02 15:31:25 rillig Exp $");
 
 
 typedef struct ForLoop {
@@ -197,7 +197,7 @@ ForLoop_ParseItems(ForLoop *f, const cha
 
 	cpp_skip_whitespace(&p);
 
-	items = Var_Subst(p, SCOPE_GLOBAL, VARE_WANTRES);
+	items = Var_Subst(p, SCOPE_GLOBAL, VARE_EVAL);
 	/* TODO: handle errors */
 
 	f->items = Substring_Words(items, false);

Index: src/usr.bin/make/job.c
diff -u src/usr.bin/make/job.c:1.474 src/usr.bin/make/job.c:1.475
--- src/usr.bin/make/job.c:1.474	Sat May 25 21:34:38 2024
+++ src/usr.bin/make/job.c	Sun Jun  2 15:31:25 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: job.c,v 1.474 2024/05/25 21:34:38 rillig Exp $	*/
+/*	$NetBSD: job.c,v 1.475 2024/06/02 15:31:25 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -141,7 +141,7 @@
 #include "trace.h"
 
 /*	"@(#)job.c	8.2 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: job.c,v 1.474 2024/05/25 21:34:38 rillig Exp $");
+MAKE_RCSID("$NetBSD: job.c,v 1.475 2024/06/02 15:31:25 rillig Exp $");
 
 /*
  * A shell defines how the commands are run.  All commands for a target are
@@ -902,7 +902,7 @@ JobWriteCommand(Job *job, ShellWriter *w
 	run = GNode_ShouldExecute(job->node);
 
 	EvalStack_Push(job->node->name, NULL, NULL);
-	xcmd = Var_Subst(ucmd, job->node, VARE_WANTRES);
+	xcmd = Var_Subst(ucmd, job->node, VARE_EVAL);
 	EvalStack_Pop();
 	/* TODO: handle errors */
 	xcmdStart = xcmd;
@@ -1031,7 +1031,7 @@ JobSaveCommands(Job *job)
 		 * expand the other variables as well; see deptgt-end.mk.
 		 */
 		EvalStack_Push(job->node->name, NULL, NULL);
-		expanded_cmd = Var_Subst(cmd, job->node, VARE_WANTRES);
+		expanded_cmd = Var_Subst(cmd, job->node, VARE_EVAL);
 		EvalStack_Pop();
 		/* TODO: handle errors */
 		Lst_Append(&Targ_GetEndNode()->commands, expanded_cmd);
@@ -1070,7 +1070,7 @@ DebugFailedJob(const Job *job)
 		debug_printf("\t%s\n", cmd);
 
 		if (strchr(cmd, '$') != NULL) {
-			char *xcmd = Var_Subst(cmd, job->node, VARE_WANTRES);
+			char *xcmd = Var_Subst(cmd, job->node, VARE_EVAL);
 			debug_printf("\t=> %s\n", xcmd);
 			free(xcmd);
 		}
@@ -2195,7 +2195,7 @@ Job_SetPrefix(void)
 		Global_Set(".MAKE.JOB.PREFIX", "---");
 
 	targPrefix = Var_Subst("${.MAKE.JOB.PREFIX}",
-	    SCOPE_GLOBAL, VARE_WANTRES);
+	    SCOPE_GLOBAL, VARE_EVAL);
 	/* TODO: handle errors */
 }
 

Index: src/usr.bin/make/main.c
diff -u src/usr.bin/make/main.c:1.623 src/usr.bin/make/main.c:1.624
--- src/usr.bin/make/main.c:1.623	Sat Jun  1 20:19:41 2024
+++ src/usr.bin/make/main.c	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.623 2024/06/01 20:19:41 rillig Exp $	*/
+/*	$NetBSD: main.c,v 1.624 2024/06/02 15:31:26 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -111,7 +111,7 @@
 #include "trace.h"
 
 /*	"@(#)main.c	8.3 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: main.c,v 1.623 2024/06/01 20:19:41 rillig Exp $");
+MAKE_RCSID("$NetBSD: main.c,v 1.624 2024/06/02 15:31:26 rillig Exp $");
 #if defined(MAKE_NATIVE)
 __COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993 "
 	    "The Regents of the University of California.  "
@@ -766,7 +766,7 @@ SetVarObjdir(bool writable, const char *
 		return false;
 	}
 
-	Var_Expand(&path, SCOPE_GLOBAL, VARE_WANTRES);
+	Var_Expand(&path, SCOPE_GLOBAL, VARE_EVAL);
 
 	(void)Main_SetObjdir(writable, "%s%s", path.str, suffix);
 
@@ -808,8 +808,7 @@ siginfo(int signo MAKE_ATTR_UNUSED)
 static void
 MakeMode(void)
 {
-	char *mode = Var_Subst("${.MAKE.MODE:tl}",
-	    SCOPE_GLOBAL, VARE_WANTRES);
+	char *mode = Var_Subst("${.MAKE.MODE:tl}", SCOPE_GLOBAL, VARE_EVAL);
 	/* TODO: handle errors */
 
 	if (mode[0] != '\0') {
@@ -832,14 +831,14 @@ static void
 PrintVar(const char *varname, bool expandVars)
 {
 	if (strchr(varname, '$') != NULL) {
-		char *evalue = Var_Subst(varname, SCOPE_GLOBAL, VARE_WANTRES);
+		char *evalue = Var_Subst(varname, SCOPE_GLOBAL, VARE_EVAL);
 		/* TODO: handle errors */
 		printf("%s\n", evalue);
 		free(evalue);
 
 	} else if (expandVars) {
 		char *expr = str_concat3("${", varname, "}");
-		char *evalue = Var_Subst(expr, SCOPE_GLOBAL, VARE_WANTRES);
+		char *evalue = Var_Subst(expr, SCOPE_GLOBAL, VARE_EVAL);
 		/* TODO: handle errors */
 		free(expr);
 		printf("%s\n", evalue);
@@ -865,7 +864,7 @@ GetBooleanExpr(const char *expr, bool fa
 	char *value;
 	bool res;
 
-	value = Var_Subst(expr, SCOPE_GLOBAL, VARE_WANTRES);
+	value = Var_Subst(expr, SCOPE_GLOBAL, VARE_EVAL);
 	/* TODO: handle errors */
 	res = ParseBoolean(value, fallback);
 	free(value);
@@ -1216,7 +1215,7 @@ InitMaxJobs(void)
 	    !Var_Exists(SCOPE_GLOBAL, ".MAKE.JOBS"))
 		return;
 
-	value = Var_Subst("${.MAKE.JOBS}", SCOPE_GLOBAL, VARE_WANTRES);
+	value = Var_Subst("${.MAKE.JOBS}", SCOPE_GLOBAL, VARE_EVAL);
 	/* TODO: handle errors */
 	n = (int)strtol(value, NULL, 0);
 	if (n < 1) {
@@ -1251,7 +1250,7 @@ InitVpath(void)
 	if (!Var_Exists(SCOPE_CMDLINE, "VPATH"))
 		return;
 
-	vpath = Var_Subst("${VPATH}", SCOPE_CMDLINE, VARE_WANTRES);
+	vpath = Var_Subst("${VPATH}", SCOPE_CMDLINE, VARE_EVAL);
 	/* TODO: handle errors */
 	path = vpath;
 	do {
@@ -1288,7 +1287,7 @@ ReadFirstDefaultMakefile(void)
 	StringList makefiles = LST_INIT;
 	StringListNode *ln;
 	char *prefs = Var_Subst("${.MAKE.MAKEFILE_PREFERENCE}",
-	    SCOPE_CMDLINE, VARE_WANTRES);
+	    SCOPE_CMDLINE, VARE_EVAL);
 	/* TODO: handle errors */
 
 	AppendWords(&makefiles, prefs);
@@ -1495,7 +1494,7 @@ main_PrepareMaking(void)
 	/* In particular suppress .depend for '-r -V .OBJDIR -f /dev/null' */
 	if (!opts.noBuiltins || opts.printVars == PVM_NONE) {
 		makeDependfile = Var_Subst("${.MAKE.DEPENDFILE}",
-		    SCOPE_CMDLINE, VARE_WANTRES);
+		    SCOPE_CMDLINE, VARE_EVAL);
 		if (makeDependfile[0] != '\0') {
 			/* TODO: handle errors */
 			doing_depend = true;
@@ -2084,7 +2083,7 @@ PrintOnError(GNode *gn, const char *msg)
 	{
 		char *errorVarsValues = Var_Subst(
 		    "${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'\n@}",
-		    SCOPE_GLOBAL, VARE_WANTRES);
+		    SCOPE_GLOBAL, VARE_EVAL);
 		/* TODO: handle errors */
 		printf("%s", errorVarsValues);
 		free(errorVarsValues);
@@ -2114,7 +2113,7 @@ Main_ExportMAKEFLAGS(bool first)
 
 	flags = Var_Subst(
 	    "${.MAKEFLAGS} ${.MAKEOVERRIDES:O:u:@v@$v=${$v:Q}@}",
-	    SCOPE_CMDLINE, VARE_WANTRES);
+	    SCOPE_CMDLINE, VARE_EVAL);
 	/* TODO: handle errors */
 	if (flags[0] != '\0')
 		setenv("MAKEFLAGS", flags, 1);
@@ -2132,7 +2131,7 @@ getTmpdir(void)
 
 	/* Honor $TMPDIR if it is valid, strip a trailing '/'. */
 	tmpdir = Var_Subst("${TMPDIR:tA:U" _PATH_TMP ":S,/$,,W}/",
-	    SCOPE_GLOBAL, VARE_WANTRES);
+	    SCOPE_GLOBAL, VARE_EVAL);
 	/* TODO: handle errors */
 
 	if (stat(tmpdir, &st) < 0 || !S_ISDIR(st.st_mode)) {

Index: src/usr.bin/make/make.c
diff -u src/usr.bin/make/make.c:1.263 src/usr.bin/make/make.c:1.264
--- src/usr.bin/make/make.c:1.263	Sat May 25 00:00:25 2024
+++ src/usr.bin/make/make.c	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: make.c,v 1.263 2024/05/25 00:00:25 rillig Exp $	*/
+/*	$NetBSD: make.c,v 1.264 2024/06/02 15:31:26 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -104,7 +104,7 @@
 #include "job.h"
 
 /*	"@(#)make.c	8.1 (Berkeley) 6/6/93"	*/
-MAKE_RCSID("$NetBSD: make.c,v 1.263 2024/05/25 00:00:25 rillig Exp $");
+MAKE_RCSID("$NetBSD: make.c,v 1.264 2024/06/02 15:31:26 rillig Exp $");
 
 /* Sequence # to detect recursion. */
 static unsigned int checked_seqno = 1;
@@ -443,7 +443,7 @@ Make_HandleUse(GNode *cgn, GNode *pgn)
 			gn->uname = gn->name;
 		else
 			free(gn->name);
-		gn->name = Var_Subst(gn->uname, pgn, VARE_WANTRES);
+		gn->name = Var_Subst(gn->uname, pgn, VARE_EVAL);
 		/* TODO: handle errors */
 		if (gn->uname != NULL && strcmp(gn->name, gn->uname) != 0) {
 			/* See if we have a target for this node. */

Index: src/usr.bin/make/make.h
diff -u src/usr.bin/make/make.h:1.337 src/usr.bin/make/make.h:1.338
--- src/usr.bin/make/make.h:1.337	Sat Jun  1 06:26:36 2024
+++ src/usr.bin/make/make.h	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: make.h,v 1.337 2024/06/01 06:26:36 sjg Exp $	*/
+/*	$NetBSD: make.h,v 1.338 2024/06/02 15:31:26 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -937,7 +937,7 @@ typedef enum VarEvalMode {
 	 * TODO: Document what Var_Parse and Var_Subst return in this mode.
 	 *  As of 2021-03-15, they return unspecified, inconsistent results.
 	 */
-	VARE_PARSE_ONLY,
+	VARE_PARSE,
 
 	/*
 	 * Parse text in which '${...}' and '$(...)' are not parsed as
@@ -948,13 +948,13 @@ typedef enum VarEvalMode {
 	VARE_PARSE_BALANCED,
 
 	/* Parse and evaluate the expression. */
-	VARE_WANTRES,
+	VARE_EVAL,
 
 	/*
 	 * Parse and evaluate the expression.  It is an error if a
 	 * subexpression evaluates to undefined.
 	 */
-	VARE_UNDEFERR,
+	VARE_EVAL_DEFINED,
 
 	/*
 	 * Parse and evaluate the expression.  Keep undefined variables as-is
@@ -967,13 +967,13 @@ typedef enum VarEvalMode {
 	 *	# way) is still undefined, the updated CFLAGS becomes
 	 *	# "-I.. $(.INCLUDES)".
 	 */
-	VARE_EVAL_KEEP_UNDEF,
+	VARE_EVAL_KEEP_UNDEFINED,
 
 	/*
 	 * Parse and evaluate the expression.  Keep '$$' as '$$' and preserve
 	 * undefined subexpressions.
 	 */
-	VARE_KEEP_DOLLAR_UNDEF
+	VARE_EVAL_KEEP_DOLLAR_AND_UNDEFINED
 } VarEvalMode;
 
 typedef enum VarSetFlags {

Index: src/usr.bin/make/meta.c
diff -u src/usr.bin/make/meta.c:1.209 src/usr.bin/make/meta.c:1.210
--- src/usr.bin/make/meta.c:1.209	Sat May 25 21:34:38 2024
+++ src/usr.bin/make/meta.c	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-/*      $NetBSD: meta.c,v 1.209 2024/05/25 21:34:38 rillig Exp $ */
+/*      $NetBSD: meta.c,v 1.210 2024/06/02 15:31:26 rillig Exp $ */
 
 /*
  * Implement 'meta' mode.
@@ -319,7 +319,7 @@ is_submake(const char *cmd, GNode *gn)
 	p_len = strlen(p_make);
     }
     if (strchr(cmd, '$') != NULL) {
-	mp = Var_Subst(cmd, gn, VARE_WANTRES);
+	mp = Var_Subst(cmd, gn, VARE_EVAL);
 	/* TODO: handle errors */
 	cmd = mp;
     }
@@ -365,7 +365,7 @@ printCMD(const char *ucmd, FILE *fp, GNo
 {
     FStr xcmd = FStr_InitRefer(ucmd);
 
-    Var_Expand(&xcmd, gn, VARE_WANTRES);
+    Var_Expand(&xcmd, gn, VARE_EVAL);
     fprintf(fp, "CMD %s\n", xcmd.str);
     FStr_Done(&xcmd);
 }
@@ -474,7 +474,7 @@ meta_create(BuildMon *pbm, GNode *gn)
 
     if (metaVerbose) {
 	/* Describe the target we are building */
-	char *mp = Var_Subst("${" MAKE_META_PREFIX "}", gn, VARE_WANTRES);
+	char *mp = Var_Subst("${" MAKE_META_PREFIX "}", gn, VARE_EVAL);
 	/* TODO: handle errors */
 	if (mp[0] != '\0')
 	    fprintf(stdout, "%s\n", mp);
@@ -611,7 +611,7 @@ meta_mode_init(const char *make_mode)
      * We consider ourselves master of all within ${.MAKE.META.BAILIWICK}
      */
     metaBailiwickStr = Var_Subst("${.MAKE.META.BAILIWICK:O:u:tA}",
-				 SCOPE_GLOBAL, VARE_WANTRES);
+				 SCOPE_GLOBAL, VARE_EVAL);
     /* TODO: handle errors */
     AppendWords(&metaBailiwick, metaBailiwickStr);
     /*
@@ -620,7 +620,7 @@ meta_mode_init(const char *make_mode)
     Global_Append(MAKE_META_IGNORE_PATHS,
 	       "/dev /etc /proc /tmp /var/run /var/tmp ${TMPDIR}");
     metaIgnorePathsStr = Var_Subst("${" MAKE_META_IGNORE_PATHS ":O:u:tA}",
-				   SCOPE_GLOBAL, VARE_WANTRES);
+				   SCOPE_GLOBAL, VARE_EVAL);
     /* TODO: handle errors */
     AppendWords(&metaIgnorePaths, metaIgnorePathsStr);
 
@@ -770,7 +770,7 @@ meta_job_output(Job *job, char *cp, cons
 		char *cp2;
 
 		meta_prefix = Var_Subst("${" MAKE_META_PREFIX "}",
-					SCOPE_GLOBAL, VARE_WANTRES);
+					SCOPE_GLOBAL, VARE_EVAL);
 		/* TODO: handle errors */
 		if ((cp2 = strchr(meta_prefix, '$')) != NULL)
 		    meta_prefix_len = (size_t)(cp2 - meta_prefix);
@@ -960,7 +960,7 @@ meta_ignore(GNode *gn, const char *p)
 	 */
 	Var_Set(gn, ".p.", p);
 	expr = "${" MAKE_META_IGNORE_PATTERNS ":@m@${.p.:M$m}@}";
-	pm = Var_Subst(expr, gn, VARE_WANTRES);
+	pm = Var_Subst(expr, gn, VARE_EVAL);
 	/* TODO: handle errors */
 	if (pm[0] != '\0') {
 #ifdef DEBUG_META_MODE
@@ -979,7 +979,7 @@ meta_ignore(GNode *gn, const char *p)
 	snprintf(fname, sizeof fname,
 		 "${%s:L:${%s:ts:}}",
 		 p, MAKE_META_IGNORE_FILTER);
-	fm = Var_Subst(fname, gn, VARE_WANTRES);
+	fm = Var_Subst(fname, gn, VARE_EVAL);
 	/* TODO: handle errors */
 	if (*fm == '\0') {
 #ifdef DEBUG_META_MODE
@@ -1039,7 +1039,7 @@ meta_filter_cmd(GNode *gn, char *s)
     Var_Set(gn, META_CMD_FILTER_VAR, s);
     s = Var_Subst(
 	"${" META_CMD_FILTER_VAR ":${" MAKE_META_CMP_FILTER ":ts:}}",
-	gn, VARE_WANTRES);
+	gn, VARE_EVAL);
     return s;
 }
 
@@ -1507,7 +1507,7 @@ meta_oodate(GNode *gn, bool oodate)
 			DEBUG2(META, "%s: %u: cannot compare command using .OODATE\n",
 			       fname, lineno);
 		    }
-		    cmd = Var_Subst(cmd, gn, VARE_UNDEFERR);
+		    cmd = Var_Subst(cmd, gn, VARE_EVAL_DEFINED);
 		    /* TODO: handle errors */
 
 		    if ((cp = strchr(cmd, '\n')) != NULL) {

Index: src/usr.bin/make/parse.c
diff -u src/usr.bin/make/parse.c:1.729 src/usr.bin/make/parse.c:1.730
--- src/usr.bin/make/parse.c:1.729	Sat Jun  1 06:26:36 2024
+++ src/usr.bin/make/parse.c	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: parse.c,v 1.729 2024/06/01 06:26:36 sjg Exp $	*/
+/*	$NetBSD: parse.c,v 1.730 2024/06/02 15:31:26 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -105,7 +105,7 @@
 #include "pathnames.h"
 
 /*	"@(#)parse.c	8.3 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: parse.c,v 1.729 2024/06/01 06:26:36 sjg Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.730 2024/06/02 15:31:26 rillig Exp $");
 
 /* Detects a multiple-inclusion guard in a makefile. */
 typedef enum {
@@ -603,7 +603,7 @@ HandleMessage(ParseErrorLevel level, con
 		return;
 	}
 
-	xmsg = Var_Subst(umsg, SCOPE_CMDLINE, VARE_WANTRES);
+	xmsg = Var_Subst(umsg, SCOPE_CMDLINE, VARE_EVAL);
 	/* TODO: handle errors */
 
 	Parse_Error(level, "%s", xmsg);
@@ -909,8 +909,7 @@ ParseDependencyTargetWord(char **pp, con
 			break;
 
 		if (*p == '$') {
-			FStr val = Var_Parse(&p, SCOPE_CMDLINE,
-			    VARE_PARSE_ONLY);
+			FStr val = Var_Parse(&p, SCOPE_CMDLINE, VARE_PARSE);
 			/* TODO: handle errors */
 			FStr_Done(&val);
 		} else
@@ -1795,7 +1794,7 @@ VarCheckSyntax(VarAssignOp op, const cha
 	if (opts.strict) {
 		if (op != VAR_SUBST && strchr(uvalue, '$') != NULL) {
 			char *parsedValue = Var_Subst(uvalue,
-			    scope, VARE_PARSE_ONLY);
+			    scope, VARE_PARSE);
 			/* TODO: handle errors */
 			free(parsedValue);
 		}
@@ -1821,7 +1820,8 @@ VarAssign_EvalSubst(GNode *scope, const 
 	if (!Var_ExistsExpand(scope, name))
 		Var_SetExpand(scope, name, "");
 
-	evalue = Var_Subst(uvalue, scope, VARE_KEEP_DOLLAR_UNDEF);
+	evalue = Var_Subst(uvalue, scope,
+	    VARE_EVAL_KEEP_DOLLAR_AND_UNDEFINED);
 	/* TODO: handle errors */
 
 	Var_SetExpand(scope, name, evalue);
@@ -1838,7 +1838,7 @@ VarAssign_EvalShell(const char *name, co
 	char *output, *error;
 
 	cmd = FStr_InitRefer(uvalue);
-	Var_Expand(&cmd, SCOPE_CMDLINE, VARE_UNDEFERR);
+	Var_Expand(&cmd, SCOPE_CMDLINE, VARE_EVAL_DEFINED);
 
 	output = Cmd_Exec(cmd.str, &error);
 	Var_SetExpand(scope, name, output);
@@ -2020,7 +2020,7 @@ ParseInclude(char *directive)
 
 	*p = '\0';
 
-	Var_Expand(&file, SCOPE_CMDLINE, VARE_WANTRES);
+	Var_Expand(&file, SCOPE_CMDLINE, VARE_EVAL);
 	IncludeFile(file.str, endc == '>', directive[0] == 'd', silent);
 	FStr_Done(&file);
 }
@@ -2229,7 +2229,7 @@ ParseTraditionalInclude(char *line)
 
 	pp_skip_whitespace(&file);
 
-	all_files = Var_Subst(file, SCOPE_CMDLINE, VARE_WANTRES);
+	all_files = Var_Subst(file, SCOPE_CMDLINE, VARE_EVAL);
 	/* TODO: handle errors */
 
 	for (file = all_files; !done; file = p + 1) {
@@ -2272,7 +2272,7 @@ ParseGmakeExport(char *line)
 	/*
 	 * Expand the value before putting it in the environment.
 	 */
-	value = Var_Subst(value, SCOPE_CMDLINE, VARE_WANTRES);
+	value = Var_Subst(value, SCOPE_CMDLINE, VARE_EVAL);
 	/* TODO: handle errors */
 
 	setenv(variable, value, 1);
@@ -2881,7 +2881,7 @@ ParseDependencyLine(char *line)
 	 * empty string var_Error, which cannot be detected in the result of
 	 * Var_Subst.
 	 */
-	emode = opts.strict ? VARE_WANTRES : VARE_UNDEFERR;
+	emode = opts.strict ? VARE_EVAL : VARE_EVAL_DEFINED;
 	expanded_line = Var_Subst(line, SCOPE_CMDLINE, emode);
 	/* TODO: handle errors */
 

Index: src/usr.bin/make/suff.c
diff -u src/usr.bin/make/suff.c:1.379 src/usr.bin/make/suff.c:1.380
--- src/usr.bin/make/suff.c:1.379	Sat May 25 08:03:19 2024
+++ src/usr.bin/make/suff.c	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: suff.c,v 1.379 2024/05/25 08:03:19 rillig Exp $	*/
+/*	$NetBSD: suff.c,v 1.380 2024/06/02 15:31:26 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -115,7 +115,7 @@
 #include "dir.h"
 
 /*	"@(#)suff.c	8.4 (Berkeley) 3/21/94"	*/
-MAKE_RCSID("$NetBSD: suff.c,v 1.379 2024/05/25 08:03:19 rillig Exp $");
+MAKE_RCSID("$NetBSD: suff.c,v 1.380 2024/06/02 15:31:26 rillig Exp $");
 
 typedef List SuffixList;
 typedef ListNode SuffixListNode;
@@ -1274,7 +1274,7 @@ ExpandChildrenRegular(char *p, GNode *pg
 		} else if (*p == '$') {
 			/* Skip over the expression. */
 			const char *nested_p = p;
-			FStr junk = Var_Parse(&nested_p, pgn, VARE_PARSE_ONLY);
+			FStr junk = Var_Parse(&nested_p, pgn, VARE_PARSE);
 			/* TODO: handle errors */
 			if (junk.str == var_Error) {
 				Parse_Error(PARSE_FATAL,
@@ -1344,7 +1344,7 @@ ExpandChildren(GNodeListNode *cln, GNode
 	}
 
 	DEBUG1(SUFF, "Expanding \"%s\"...", cgn->name);
-	expanded = Var_Subst(cgn->name, pgn, VARE_UNDEFERR);
+	expanded = Var_Subst(cgn->name, pgn, VARE_EVAL_DEFINED);
 	/* TODO: handle errors */
 
 	{

Index: src/usr.bin/make/var.c
diff -u src/usr.bin/make/var.c:1.1118 src/usr.bin/make/var.c:1.1119
--- src/usr.bin/make/var.c:1.1118	Sun Jun  2 11:25:03 2024
+++ src/usr.bin/make/var.c	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.1118 2024/06/02 11:25:03 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.1119 2024/06/02 15:31:26 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -132,7 +132,7 @@
 #include "metachar.h"
 
 /*	"@(#)var.c	8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: var.c,v 1.1118 2024/06/02 11:25:03 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.1119 2024/06/02 15:31:26 rillig Exp $");
 
 /*
  * Variables are defined using one of the VAR=value assignments.  Their
@@ -278,11 +278,11 @@ char var_Error[] = "";
 
 /*
  * Special return value for Var_Parse, indicating an undefined variable in
- * a case where VARE_UNDEFERR is not set.  This undefined variable is
+ * a case where VARE_EVAL_DEFINED is not set.  This undefined variable is
  * typically a dynamic variable such as ${.TARGET}, whose expansion needs to
  * be deferred until it is defined in an actual target.
  *
- * See VARE_EVAL_KEEP_UNDEF.
+ * See VARE_EVAL_KEEP_UNDEFINED.
  */
 static char varUndefined[] = "";
 
@@ -324,7 +324,7 @@ GNode *SCOPE_INTERNAL;
 static VarExportedMode var_exportedVars = VAR_EXPORTED_NONE;
 
 static const char VarEvalMode_Name[][32] = {
-	"parse-only",
+	"parse",
 	"parse-balanced",
 	"eval",
 	"eval-defined",
@@ -612,7 +612,7 @@ Var_Undef(const char *arg)
 		return;
 	}
 
-	expanded = Var_Subst(arg, SCOPE_GLOBAL, VARE_WANTRES);
+	expanded = Var_Subst(arg, SCOPE_GLOBAL, VARE_EVAL);
 	if (expanded == var_Error) {
 		/* TODO: Make this part of the code reachable. */
 		Parse_Error(PARSE_FATAL,
@@ -679,7 +679,7 @@ ExportVarEnv(Var *v, GNode *scope)
 
 	/* XXX: name is injected without escaping it */
 	expr = str_concat3("${", name, "}");
-	val = Var_Subst(expr, scope, VARE_WANTRES);
+	val = Var_Subst(expr, scope, VARE_EVAL);
 	if (scope != SCOPE_GLOBAL) {
 		/* we will need to re-export the global version */
 		v = VarFind(name, SCOPE_GLOBAL, false);
@@ -788,7 +788,7 @@ Var_ReexportVars(GNode *scope)
 	}
 
 	xvarnames = Var_Subst("${.MAKE.EXPORTED:O:u}", SCOPE_GLOBAL,
-	    VARE_WANTRES);
+	    VARE_EVAL);
 	/* TODO: handle errors */
 	if (xvarnames[0] != '\0') {
 		Words varnames = Str_Words(xvarnames, false);
@@ -828,7 +828,7 @@ ExportVars(const char *varnames, bool is
 static void
 ExportVarsExpand(const char *uvarnames, bool isExport, VarExportMode mode)
 {
-	char *xvarnames = Var_Subst(uvarnames, SCOPE_GLOBAL, VARE_WANTRES);
+	char *xvarnames = Var_Subst(uvarnames, SCOPE_GLOBAL, VARE_EVAL);
 	/* TODO: handle errors */
 	ExportVars(xvarnames, isExport, mode);
 	free(xvarnames);
@@ -906,7 +906,7 @@ GetVarnamesToUnexport(bool isEnv, const 
 
 	if (what != UNEXPORT_NAMED) {
 		char *expanded = Var_Subst("${.MAKE.EXPORTED:O:u}",
-		    SCOPE_GLOBAL, VARE_WANTRES);
+		    SCOPE_GLOBAL, VARE_EVAL);
 		/* TODO: handle errors */
 		varnames = FStr_InitOwn(expanded);
 	}
@@ -937,7 +937,7 @@ UnexportVar(Substring varname, UnexportW
 		/* XXX: v->name is injected without escaping it */
 		char *expr = str_concat3(
 		    "${.MAKE.EXPORTED:N", v->name.str, "}");
-		char *filtered = Var_Subst(expr, SCOPE_GLOBAL, VARE_WANTRES);
+		char *filtered = Var_Subst(expr, SCOPE_GLOBAL, VARE_EVAL);
 		/* TODO: handle errors */
 		Global_Set(".MAKE.EXPORTED", filtered);
 		free(filtered);
@@ -1094,7 +1094,7 @@ Var_SetExpand(GNode *scope, const char *
 
 	assert(val != NULL);
 
-	Var_Expand(&varname, scope, VARE_WANTRES);
+	Var_Expand(&varname, scope, VARE_EVAL);
 
 	if (varname.str[0] == '\0') {
 		DEBUG4(VAR,
@@ -1177,7 +1177,7 @@ Var_AppendExpand(GNode *scope, const cha
 
 	assert(val != NULL);
 
-	Var_Expand(&xname, scope, VARE_WANTRES);
+	Var_Expand(&xname, scope, VARE_EVAL);
 	if (xname.str != name && xname.str[0] == '\0')
 		DEBUG4(VAR,
 		    "%s: ignoring '%s += %s' "
@@ -1220,7 +1220,7 @@ Var_ExistsExpand(GNode *scope, const cha
 	FStr varname = FStr_InitRefer(name);
 	bool exists;
 
-	Var_Expand(&varname, scope, VARE_WANTRES);
+	Var_Expand(&varname, scope, VARE_EVAL);
 	exists = Var_Exists(scope, varname.str);
 	FStr_Done(&varname);
 	return exists;
@@ -1286,32 +1286,33 @@ GNode_ValueDirect(GNode *gn, const char 
 static VarEvalMode
 VarEvalMode_WithoutKeepDollar(VarEvalMode emode)
 {
-	return emode == VARE_KEEP_DOLLAR_UNDEF ? VARE_EVAL_KEEP_UNDEF : emode;
+	return emode == VARE_EVAL_KEEP_DOLLAR_AND_UNDEFINED
+	    ? VARE_EVAL_KEEP_UNDEFINED : emode;
 }
 
 static VarEvalMode
 VarEvalMode_UndefOk(VarEvalMode emode)
 {
-	return emode == VARE_UNDEFERR ? VARE_WANTRES : emode;
+	return emode == VARE_EVAL_DEFINED ? VARE_EVAL : emode;
 }
 
 static bool
 VarEvalMode_ShouldEval(VarEvalMode emode)
 {
-	return emode != VARE_PARSE_ONLY;
+	return emode != VARE_PARSE;
 }
 
 static bool
 VarEvalMode_ShouldKeepUndef(VarEvalMode emode)
 {
-	return emode == VARE_EVAL_KEEP_UNDEF ||
-	       emode == VARE_KEEP_DOLLAR_UNDEF;
+	return emode == VARE_EVAL_KEEP_UNDEFINED ||
+	       emode == VARE_EVAL_KEEP_DOLLAR_AND_UNDEFINED;
 }
 
 static bool
 VarEvalMode_ShouldKeepDollar(VarEvalMode emode)
 {
-	return emode == VARE_KEEP_DOLLAR_UNDEF;
+	return emode == VARE_EVAL_KEEP_DOLLAR_AND_UNDEFINED;
 }
 
 
@@ -1440,7 +1441,7 @@ ModifyWord_SysVSubst(Substring word, Sep
 	}
 
 	rhs = FStr_InitRefer(args->rhs);
-	Var_Expand(&rhs, args->scope, VARE_WANTRES);
+	Var_Expand(&rhs, args->scope, VARE_EVAL);
 
 	percent = args->lhsPercent ? strchr(rhs.str, '%') : NULL;
 
@@ -2362,7 +2363,7 @@ ApplyModifier_Loop(const char **pp, ModC
 	args.scope = expr->scope;
 
 	(*pp)++;		/* Skip the first '@' */
-	if (!ParseModifierPart(pp, '@', '@', VARE_PARSE_ONLY,
+	if (!ParseModifierPart(pp, '@', '@', VARE_PARSE,
 	    ch, &tvarBuf, NULL, NULL))
 		return AMR_CLEANUP;
 	tvar = LazyBuf_DoneGet(&tvarBuf);
@@ -2432,7 +2433,7 @@ ParseModifier_Defined(const char **pp, M
 
 		if (*p == '$') {
 			FStr val = Var_Parse(&p, ch->expr->scope,
-			    shouldEval ? ch->expr->emode : VARE_PARSE_ONLY);
+			    shouldEval ? ch->expr->emode : VARE_PARSE);
 			/* TODO: handle errors */
 			if (shouldEval)
 				LazyBuf_AddStr(buf, val.str);
@@ -3042,7 +3043,7 @@ ApplyModifier_ToSep(const char **pp, Mod
 	/*
 	 * Even in parse-only mode, apply the side effects, since the side
 	 * effects are neither observable nor is there a performance penalty.
-	 * Checking for wantRes for every single piece of code in here
+	 * Checking for VARE_EVAL for every single piece of code in here
 	 * would make the code in this function too hard to read.
 	 */
 
@@ -3419,8 +3420,8 @@ ApplyModifier_IfElse(const char **pp, Mo
 	LazyBuf thenBuf;
 	LazyBuf elseBuf;
 
-	VarEvalMode then_emode = VARE_PARSE_ONLY;
-	VarEvalMode else_emode = VARE_PARSE_ONLY;
+	VarEvalMode then_emode = VARE_PARSE;
+	VarEvalMode else_emode = VARE_PARSE;
 
 	CondResult cond_rc = CR_TRUE;	/* just not CR_ERROR */
 	if (Expr_ShouldEval(expr)) {
@@ -3742,9 +3743,8 @@ ApplyModifier_SunShell(const char **pp, 
 static bool
 ShouldLogInSimpleFormat(const Expr *expr)
 {
-	return (expr->emode == VARE_WANTRES ||
-		expr->emode == VARE_UNDEFERR) &&
-	       expr->defined == DEF_REGULAR;
+	return (expr->emode == VARE_EVAL || expr->emode == VARE_EVAL_DEFINED)
+	    && expr->defined == DEF_REGULAR;
 }
 
 static void
@@ -4230,7 +4230,7 @@ ParseVarnameShort(char varname, const ch
 
 	val = UndefinedShortVarValue(varname, scope);
 	if (val == NULL)
-		val = emode == VARE_UNDEFERR ? var_Error : varUndefined;
+		val = emode == VARE_EVAL_DEFINED ? var_Error : varUndefined;
 
 	if (opts.strict && val == var_Error) {
 		Parse_Error(PARSE_FATAL,
@@ -4275,7 +4275,7 @@ EvalUndefined(bool dynamic, const char *
 	if (dynamic)
 		return FStr_InitOwn(bmake_strsedup(start, p));
 
-	if (emode == VARE_UNDEFERR && opts.strict) {
+	if (emode == VARE_EVAL_DEFINED && opts.strict) {
 		Parse_Error(PARSE_FATAL,
 		    "Variable \"%.*s\" is undefined",
 		    (int)Substring_Length(varname), varname.start);
@@ -4283,7 +4283,7 @@ EvalUndefined(bool dynamic, const char *
 	}
 
 	return FStr_InitRefer(
-	    emode == VARE_UNDEFERR ? var_Error : varUndefined);
+	    emode == VARE_EVAL_DEFINED ? var_Error : varUndefined);
 }
 
 /*
@@ -4436,7 +4436,7 @@ Var_Parse_U(const char **pp, VarEvalMode
 	if (*p != '}')
 		return false;
 
-	*out_value = emode == VARE_PARSE_ONLY
+	*out_value = emode == VARE_PARSE
 	    ? FStr_InitRefer("")
 	    : FStr_InitOwn(bmake_strsedup(*pp + 4, p));
 	*pp = p + 1;
@@ -4465,13 +4465,13 @@ Var_Parse_U(const char **pp, VarEvalMode
  *	return		The value of the expression, never NULL.
  *	return		var_Error if there was a parse error.
  *	return		var_Error if the base variable of the expression was
- *			undefined, emode is VARE_UNDEFERR, and none of
+ *			undefined, emode is VARE_EVAL_DEFINED, and none of
  *			the modifiers turned the undefined expression into a
  *			defined expression.
  *			XXX: It is not guaranteed that an error message has
  *			been printed.
  *	return		varUndefined if the base variable of the expression
- *			was undefined, emode was not VARE_UNDEFERR,
+ *			was undefined, emode was not VARE_EVAL_DEFINED,
  *			and none of the modifiers turned the undefined
  *			expression into a defined expression.
  *			XXX: It is not guaranteed that an error message has
@@ -4600,7 +4600,7 @@ Var_Parse(const char **pp, GNode *scope,
 			 * instead.
 			 */
 			Expr_SetValueRefer(&expr,
-			    emode == VARE_UNDEFERR
+			    emode == VARE_EVAL_DEFINED
 				? var_Error : varUndefined);
 		}
 	}

Index: src/usr.bin/make/unit-tests/cond-func-empty.mk
diff -u src/usr.bin/make/unit-tests/cond-func-empty.mk:1.24 src/usr.bin/make/unit-tests/cond-func-empty.mk:1.25
--- src/usr.bin/make/unit-tests/cond-func-empty.mk:1.24	Tue Dec 19 19:33:40 2023
+++ src/usr.bin/make/unit-tests/cond-func-empty.mk	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-# $NetBSD: cond-func-empty.mk,v 1.24 2023/12/19 19:33:40 rillig Exp $
+# $NetBSD: cond-func-empty.mk,v 1.25 2024/06/02 15:31:26 rillig Exp $
 #
 # Tests for the empty() function in .if conditions, which tests an
 # expression for emptiness.
@@ -104,10 +104,10 @@ WORD=	word
 
 # Now the variable named " " gets a non-empty value, which demonstrates that
 # neither leading nor trailing spaces are trimmed in the argument of the
-# function.  If the spaces were trimmed, the variable name would be "" and
-# that variable is indeed undefined.  Since CondParser_FuncCallEmpty calls
-# Var_Parse without VARE_UNDEFERR, the value of the undefined variable ""
-# would be returned as an empty string.
+# function.  If the spaces were trimmed, the variable name would be "", and
+# that variable is indeed undefined.  Since CondParser_FuncCallEmpty allows
+# subexpressions to be based on undefined variables, the value of the
+# undefined variable "" would be returned as an empty string.
 ${:U }=	space
 .if empty( )
 .  error
@@ -194,15 +194,15 @@ ${:U WORD }=	variable name with spaces
 # wrong variable name should have been discarded quickly after parsing it, to
 # prevent it from doing any harm.
 #
-# The expression was expanded, and this was wrong.  The
-# expansion was done without VARE_WANTRES (called VARF_WANTRES back then)
-# though.  This had the effect that the ${:U1} from the value of VARNAME
-# expanded to an empty string.  This in turn created the seemingly recursive
-# definition VARNAME=${VARNAME}, and that definition was never meant to be
-# expanded.
+# The expression was evaluated, and this was wrong.  The evaluation was done
+# without VARE_EVAL (called VARF_WANTRES back then) though.  This had the
+# effect that the ${:U1} from the value of VARNAME evaluated to an empty
+# string.  This in turn created the seemingly recursive definition
+# VARNAME=${VARNAME}, and that definition was evaluated even though it was
+# never meant to be evaluated.
 #
-# This was fixed by expanding nested expressions in the variable name
-# only if the flag VARE_WANTRES is given.
+# This was fixed by evaluating nested expressions in the variable name only
+# when the whole expression was evaluated as well.
 VARNAME=	${VARNAME${:U1}}
 .if defined(VARNAME${:U2}) && !empty(VARNAME${:U2})
 .endif

Index: src/usr.bin/make/unit-tests/dep-var.exp
diff -u src/usr.bin/make/unit-tests/dep-var.exp:1.6 src/usr.bin/make/unit-tests/dep-var.exp:1.7
--- src/usr.bin/make/unit-tests/dep-var.exp:1.6	Sun Nov 19 22:06:15 2023
+++ src/usr.bin/make/unit-tests/dep-var.exp	Sun Jun  2 15:31:26 2024
@@ -16,9 +16,9 @@ Result of ${:U\$)} is "$)" (eval-defined
 Global: .ALLTARGETS =  all ${DEF2} a-${DEF2}-b ${UNDEF3} 1-${INDIRECT_1}-1 $$) undef1
 Global: .ALLTARGETS =  all ${DEF2} a-${DEF2}-b ${UNDEF3} 1-${INDIRECT_1}-1 $$) undef1 def2
 Global: .ALLTARGETS =  all ${DEF2} a-${DEF2}-b ${UNDEF3} 1-${INDIRECT_1}-1 $$) undef1 def2 a-def2-b
-Var_Parse: $INDIRECT_2-2-1 $): (parse-only)
+Var_Parse: $INDIRECT_2-2-1 $): (parse)
 Global: .ALLTARGETS =  all ${DEF2} a-${DEF2}-b ${UNDEF3} 1-${INDIRECT_1}-1 $$) undef1 def2 a-def2-b 1-2-$INDIRECT_2-2-1
-Var_Parse: $): (parse-only)
+Var_Parse: $): (parse)
 Global: .ALLTARGETS =  all ${DEF2} a-${DEF2}-b ${UNDEF3} 1-${INDIRECT_1}-1 $$) undef1 def2 a-def2-b 1-2-$INDIRECT_2-2-1 $)
 Global: .MAKEFLAGS =  -r -k -d v -d
 Global: .MAKEFLAGS =  -r -k -d v -d 0

Index: src/usr.bin/make/unit-tests/dep-var.mk
diff -u src/usr.bin/make/unit-tests/dep-var.mk:1.11 src/usr.bin/make/unit-tests/dep-var.mk:1.12
--- src/usr.bin/make/unit-tests/dep-var.mk:1.11	Tue Dec 19 19:33:40 2023
+++ src/usr.bin/make/unit-tests/dep-var.mk	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-# $NetBSD: dep-var.mk,v 1.11 2023/12/19 19:33:40 rillig Exp $
+# $NetBSD: dep-var.mk,v 1.12 2024/06/02 15:31:26 rillig Exp $
 #
 # Tests for variable references in dependency declarations.
 #
@@ -84,8 +84,8 @@ all: $$$$)
 # in normal mode since ParseDependency does not handle any errors after
 # calling Var_Parse.
 # expect: Var_Parse: ${:U\$)}: (eval-defined)
-# expect: Var_Parse: $INDIRECT_2-2-1 $): (parse-only)
-# expect: Var_Parse: $): (parse-only)
+# expect: Var_Parse: $INDIRECT_2-2-1 $): (parse)
+# expect: Var_Parse: $): (parse)
 undef1 def2 a-def2-b 1-2-$$INDIRECT_2-2-1 ${:U\$)}:
 	@echo ${.TARGET:Q}
 

Index: src/usr.bin/make/unit-tests/parse-var.mk
diff -u src/usr.bin/make/unit-tests/parse-var.mk:1.9 src/usr.bin/make/unit-tests/parse-var.mk:1.10
--- src/usr.bin/make/unit-tests/parse-var.mk:1.9	Sun Nov 19 21:47:52 2023
+++ src/usr.bin/make/unit-tests/parse-var.mk	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-# $NetBSD: parse-var.mk,v 1.9 2023/11/19 21:47:52 rillig Exp $
+# $NetBSD: parse-var.mk,v 1.10 2024/06/02 15:31:26 rillig Exp $
 #
 # Tests for parsing expressions.
 #
@@ -20,11 +20,11 @@
 #
 # VarEvalMode:
 #	parse
+#	parse-balanced
 #	eval
-#	eval-undeferr
-#	eval-keep-dollar
-#	eval-keep-undef
-#	eval-keep-dollar-undef
+#	eval-defined
+#	eval-keep-undefined
+#	eval-keep-dollar-and-undefined
 #
 # Global mode:
 #	without -dL

Index: src/usr.bin/make/unit-tests/recursive.mk
diff -u src/usr.bin/make/unit-tests/recursive.mk:1.7 src/usr.bin/make/unit-tests/recursive.mk:1.8
--- src/usr.bin/make/unit-tests/recursive.mk:1.7	Thu Oct 19 18:24:33 2023
+++ src/usr.bin/make/unit-tests/recursive.mk	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-# $NetBSD: recursive.mk,v 1.7 2023/10/19 18:24:33 rillig Exp $
+# $NetBSD: recursive.mk,v 1.8 2024/06/02 15:31:26 rillig Exp $
 #
 # In -dL mode, a variable may get expanded before it makes sense.
 # This would stop make from doing anything since the "recursive" error
@@ -6,7 +6,7 @@
 #
 # The purpose of evaluating that variable early was just to detect
 # whether there are unclosed variables.  The variable value is therefore
-# parsed with VARE_PARSE_ONLY for that purpose.
+# parsed with VARE_PARSE for that purpose.
 #
 
 .MAKEFLAGS: -dL

Index: src/usr.bin/make/unit-tests/var-eval-short.exp
diff -u src/usr.bin/make/unit-tests/var-eval-short.exp:1.25 src/usr.bin/make/unit-tests/var-eval-short.exp:1.26
--- src/usr.bin/make/unit-tests/var-eval-short.exp:1.25	Sat Apr 20 10:18:55 2024
+++ src/usr.bin/make/unit-tests/var-eval-short.exp	Sun Jun  2 15:31:26 2024
@@ -2,26 +2,26 @@ make: "var-eval-short.mk" line 46: while
 make: "var-eval-short.mk" line 46: Malformed conditional (0 && ${:Uword:@${FAIL}@expr@})
 Parsing line 159: .if 0 && ${0:?${FAIL}then:${FAIL}else}
 CondParser_Eval: 0 && ${0:?${FAIL}then:${FAIL}else}
-Var_Parse: ${0:?${FAIL}then:${FAIL}else} (parse-only)
+Var_Parse: ${0:?${FAIL}then:${FAIL}else} (parse)
 Parsing modifier ${0:?...}
-Var_Parse: ${FAIL}then:${FAIL}else} (parse-only)
+Var_Parse: ${FAIL}then:${FAIL}else} (parse)
 Modifier part: "${FAIL}then"
-Var_Parse: ${FAIL}else} (parse-only)
+Var_Parse: ${FAIL}else} (parse)
 Modifier part: "${FAIL}else"
-Result of ${0:?${FAIL}then:${FAIL}else} is "" (parse-only, defined)
+Result of ${0:?${FAIL}then:${FAIL}else} is "" (parse, defined)
 Parsing line 167: DEFINED=	defined
 Global: DEFINED = defined
 Parsing line 168: .if 0 && ${DEFINED:L:?${FAIL}then:${FAIL}else}
 CondParser_Eval: 0 && ${DEFINED:L:?${FAIL}then:${FAIL}else}
-Var_Parse: ${DEFINED:L:?${FAIL}then:${FAIL}else} (parse-only)
+Var_Parse: ${DEFINED:L:?${FAIL}then:${FAIL}else} (parse)
 Parsing modifier ${DEFINED:L}
-Result of ${DEFINED:L} is "defined" (parse-only, regular)
+Result of ${DEFINED:L} is "defined" (parse, regular)
 Parsing modifier ${DEFINED:?...}
-Var_Parse: ${FAIL}then:${FAIL}else} (parse-only)
+Var_Parse: ${FAIL}then:${FAIL}else} (parse)
 Modifier part: "${FAIL}then"
-Var_Parse: ${FAIL}else} (parse-only)
+Var_Parse: ${FAIL}else} (parse)
 Modifier part: "${FAIL}else"
-Result of ${DEFINED:?${FAIL}then:${FAIL}else} is "defined" (parse-only, regular)
+Result of ${DEFINED:?${FAIL}then:${FAIL}else} is "defined" (parse, regular)
 Parsing line 170: .MAKEFLAGS: -d0
 ParseDependency(.MAKEFLAGS: -d0)
 Global: .MAKEFLAGS =  -r -k -d cpv -d
Index: src/usr.bin/make/unit-tests/varmod-loop.mk
diff -u src/usr.bin/make/unit-tests/varmod-loop.mk:1.25 src/usr.bin/make/unit-tests/varmod-loop.mk:1.26
--- src/usr.bin/make/unit-tests/varmod-loop.mk:1.25	Sat Jun  1 05:08:48 2024
+++ src/usr.bin/make/unit-tests/varmod-loop.mk	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-# $NetBSD: varmod-loop.mk,v 1.25 2024/06/01 05:08:48 rillig Exp $
+# $NetBSD: varmod-loop.mk,v 1.26 2024/06/02 15:31:26 rillig Exp $
 #
 # Tests for the expression modifier ':@var@body@', which replaces each word of
 # the expression with the expanded body, which may contain references to the
@@ -93,11 +93,11 @@ USE_8_DOLLARS=	${:U1:@var@${8_DOLLARS}@}
 #
 SUBST_CONTAINING_LOOP:= ${USE_8_DOLLARS}
 # The ':=' assignment operator evaluates the variable value using the mode
-# VARE_KEEP_DOLLAR_UNDEF, which means that some dollar signs are preserved,
-# but not all.  The dollar signs in the top-level expression and in the
-# indirect ${8_DOLLARS} are preserved.
+# VARE_EVAL_KEEP_DOLLAR_AND_UNDEFINED, which means that some dollar signs are
+# preserved, but not all.  The dollar signs in the top-level expression and in
+# the indirect ${8_DOLLARS} are preserved.
 #
-# The variable modifier :@var@ does not preserve the dollar signs though, no
+# The modifier :@var@ does not preserve the dollar signs though, no
 # matter in which context it is evaluated.  What happens in detail is:
 # First, the modifier part "${8_DOLLARS}" is parsed without expanding it.
 # Next, each word of the value is expanded on its own, and at this moment

Index: src/usr.bin/make/unit-tests/varmod-ifelse.mk
diff -u src/usr.bin/make/unit-tests/varmod-ifelse.mk:1.28 src/usr.bin/make/unit-tests/varmod-ifelse.mk:1.29
--- src/usr.bin/make/unit-tests/varmod-ifelse.mk:1.28	Tue Apr 23 22:51:28 2024
+++ src/usr.bin/make/unit-tests/varmod-ifelse.mk	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-# $NetBSD: varmod-ifelse.mk,v 1.28 2024/04/23 22:51:28 rillig Exp $
+# $NetBSD: varmod-ifelse.mk,v 1.29 2024/06/02 15:31:26 rillig Exp $
 #
 # Tests for the ${cond:?then:else} variable modifier, which evaluates either
 # the then-expression or the else-expression, depending on the condition.
@@ -77,7 +77,7 @@ COND:=	${${UNDEF} == "":?bad-assign:bad-
 # conditional expression".
 #
 # XXX: The left-hand side is enclosed in quotes.  This results in Var_Parse
-# being called without VARE_UNDEFERR.  When ApplyModifier_IfElse
+# being called without VARE_EVAL_DEFINED.  When ApplyModifier_IfElse
 # returns AMR_CLEANUP as result, Var_Parse returns varUndefined since the
 # value of the expression is still undefined.  CondParser_String is
 # then supposed to do proper error handling, but since varUndefined is local

Index: src/usr.bin/make/unit-tests/varparse-errors.mk
diff -u src/usr.bin/make/unit-tests/varparse-errors.mk:1.12 src/usr.bin/make/unit-tests/varparse-errors.mk:1.13
--- src/usr.bin/make/unit-tests/varparse-errors.mk:1.12	Sat Apr 20 10:18:56 2024
+++ src/usr.bin/make/unit-tests/varparse-errors.mk	Sun Jun  2 15:31:26 2024
@@ -1,4 +1,4 @@
-# $NetBSD: varparse-errors.mk,v 1.12 2024/04/20 10:18:56 rillig Exp $
+# $NetBSD: varparse-errors.mk,v 1.13 2024/06/02 15:31:26 rillig Exp $
 
 # Tests for parsing and evaluating all kinds of expressions.
 #
@@ -24,7 +24,7 @@ ERR_BAD_MOD=	An ${:Uindirect:Z} expressi
 ERR_EVAL=	An evaluation error ${:Uvalue:C,.,\3,}.
 
 # In a conditional, an expression that is not enclosed in quotes is
-# expanded using the mode VARE_UNDEFERR.
+# expanded using the mode VARE_EVAL_DEFINED.
 # The variable itself must be defined.
 # It may refer to undefined variables though.
 .if ${REF_UNDEF} != "A reference to an undefined variable."

Reply via email to