Module Name:    src
Committed By:   rillig
Date:           Fri Jul  5 17:41:50 UTC 2024

Modified Files:
        src/usr.bin/make/unit-tests: cmd-errors-jobs.mk cmd-errors-lint.mk
            cmd-errors.mk directive-for-escape.exp directive-for-escape.mk
            moderrs.mk varmisc.mk varmod-edge.exp varmod-edge.mk
            varmod-order.exp varmod-order.mk varparse-errors.mk

Log Message:
tests/make: add expected messages for "Unclosed expression"


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/usr.bin/make/unit-tests/cmd-errors-jobs.mk
cvs rdiff -u -r1.2 -r1.3 src/usr.bin/make/unit-tests/cmd-errors-lint.mk
cvs rdiff -u -r1.6 -r1.7 src/usr.bin/make/unit-tests/cmd-errors.mk
cvs rdiff -u -r1.25 -r1.26 \
    src/usr.bin/make/unit-tests/directive-for-escape.exp
cvs rdiff -u -r1.23 -r1.24 \
    src/usr.bin/make/unit-tests/directive-for-escape.mk
cvs rdiff -u -r1.35 -r1.36 src/usr.bin/make/unit-tests/moderrs.mk
cvs rdiff -u -r1.33 -r1.34 src/usr.bin/make/unit-tests/varmisc.mk
cvs rdiff -u -r1.20 -r1.21 src/usr.bin/make/unit-tests/varmod-edge.exp
cvs rdiff -u -r1.22 -r1.23 src/usr.bin/make/unit-tests/varmod-edge.mk
cvs rdiff -u -r1.11 -r1.12 src/usr.bin/make/unit-tests/varmod-order.exp
cvs rdiff -u -r1.12 -r1.13 src/usr.bin/make/unit-tests/varmod-order.mk
cvs rdiff -u -r1.14 -r1.15 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/unit-tests/cmd-errors-jobs.mk
diff -u src/usr.bin/make/unit-tests/cmd-errors-jobs.mk:1.5 src/usr.bin/make/unit-tests/cmd-errors-jobs.mk:1.6
--- src/usr.bin/make/unit-tests/cmd-errors-jobs.mk:1.5	Thu Jul  4 17:47:54 2024
+++ src/usr.bin/make/unit-tests/cmd-errors-jobs.mk	Fri Jul  5 17:41:50 2024
@@ -1,4 +1,4 @@
-# $NetBSD: cmd-errors-jobs.mk,v 1.5 2024/07/04 17:47:54 rillig Exp $
+# $NetBSD: cmd-errors-jobs.mk,v 1.6 2024/07/05 17:41:50 rillig Exp $
 #
 # Demonstrate how errors in expressions affect whether the commands
 # are actually executed in jobs mode.
@@ -13,22 +13,22 @@ all: undefined unclosed-expression unclo
 undefined:
 	: $@-${UNDEFINED}-eol
 
-# XXX: This command is executed even though it contains parse errors.
+unclosed-expression:
 # expect: make: in target "unclosed-expression": Unclosed variable "UNCLOSED"
+# XXX: This command is executed even though it contains parse errors.
 # expect: : unclosed-expression-
-unclosed-expression:
 	: $@-${UNCLOSED
 
-# XXX: This command is executed even though it contains parse errors.
+unclosed-modifier:
 # expect: make: Unclosed expression, expecting '}' for "UNCLOSED"
+# XXX: This command is executed even though it contains parse errors.
 # expect: : unclosed-modifier-
-unclosed-modifier:
 	: $@-${UNCLOSED:
 
-# XXX: This command is executed even though it contains parse errors.
+unknown-modifier:
 # expect: make: in target "unknown-modifier": while evaluating variable "UNKNOWN" with value "": Unknown modifier "Z"
+# XXX: This command is executed even though it contains parse errors.
 # expect: : unknown-modifier--eol
-unknown-modifier:
 	: $@-${UNKNOWN:Z}-eol
 
 # expect: : end-eol

Index: src/usr.bin/make/unit-tests/cmd-errors-lint.mk
diff -u src/usr.bin/make/unit-tests/cmd-errors-lint.mk:1.2 src/usr.bin/make/unit-tests/cmd-errors-lint.mk:1.3
--- src/usr.bin/make/unit-tests/cmd-errors-lint.mk:1.2	Tue Apr 23 22:51:28 2024
+++ src/usr.bin/make/unit-tests/cmd-errors-lint.mk	Fri Jul  5 17:41:50 2024
@@ -1,4 +1,4 @@
-# $NetBSD: cmd-errors-lint.mk,v 1.2 2024/04/23 22:51:28 rillig Exp $
+# $NetBSD: cmd-errors-lint.mk,v 1.3 2024/07/05 17:41:50 rillig Exp $
 #
 # Demonstrate how errors in expressions affect whether the commands
 # are actually executed.
@@ -10,24 +10,29 @@ all: undefined unclosed-expression unclo
 # Undefined variables in expressions are not an error.  They expand to empty
 # strings.
 undefined:
+# expect: : undefined
 	: $@ ${UNDEFINED}
 
-# XXX: As of 2020-11-01, this obvious syntax error is not detected.
-# XXX: As of 2020-11-01, this command is executed even though it contains
-# parse errors.
 unclosed-expression:
+# expect: make: in target "unclosed-expression": Unclosed variable "UNCLOSED"
+# XXX: This command is executed even though it contains parse errors.
+# expect: : unclosed-expression
 	: $@ ${UNCLOSED
 
-# XXX: As of 2020-11-01, this obvious syntax error is not detected.
-# XXX: As of 2020-11-01, this command is executed even though it contains
-# parse errors.
 unclosed-modifier:
+# expect: make: Unclosed expression, expecting '}' for "UNCLOSED"
+# XXX: This command is executed even though it contains parse errors.
+# expect: : unclosed-modifier
 	: $@ ${UNCLOSED:
 
-# XXX: As of 2020-11-01, this command is executed even though it contains
-# parse errors.
 unknown-modifier:
+# expect: make: in target "unknown-modifier": while evaluating variable "UNKNOWN" with value "": Unknown modifier "Z"
+# XXX: This command is executed even though it contains parse errors.
+# expect: : unknown-modifier
 	: $@ ${UNKNOWN:Z}
 
 end:
+# expect: : end
 	: $@
+
+# expect: exit status 2

Index: src/usr.bin/make/unit-tests/cmd-errors.mk
diff -u src/usr.bin/make/unit-tests/cmd-errors.mk:1.6 src/usr.bin/make/unit-tests/cmd-errors.mk:1.7
--- src/usr.bin/make/unit-tests/cmd-errors.mk:1.6	Tue Apr 23 22:51:28 2024
+++ src/usr.bin/make/unit-tests/cmd-errors.mk	Fri Jul  5 17:41:50 2024
@@ -1,4 +1,4 @@
-# $NetBSD: cmd-errors.mk,v 1.6 2024/04/23 22:51:28 rillig Exp $
+# $NetBSD: cmd-errors.mk,v 1.7 2024/07/05 17:41:50 rillig Exp $
 #
 # Demonstrate how errors in expressions affect whether the commands
 # are actually executed in compat mode.
@@ -8,24 +8,30 @@ all: undefined unclosed-expression unclo
 # Undefined variables in expressions are not an error.  They expand to empty
 # strings.
 undefined:
+# expect: : undefined--eol
 	: $@-${UNDEFINED}-eol
 
-# XXX: As of 2020-11-01, this command is executed even though it contains
-# parse errors.
 unclosed-expression:
+# expect: make: in target "unclosed-expression": Unclosed variable "UNCLOSED"
+# XXX: This command is executed even though it contains parse errors.
+# expect: : unclosed-expression-
 	: $@-${UNCLOSED
 
-# XXX: As of 2020-11-01, this command is executed even though it contains
-# parse errors.
 unclosed-modifier:
+# expect: make: Unclosed expression, expecting '}' for "UNCLOSED"
+# XXX: This command is executed even though it contains parse errors.
+# expect: : unclosed-modifier-
 	: $@-${UNCLOSED:
 
-# XXX: As of 2020-11-01, this command is executed even though it contains
-# parse errors.
 unknown-modifier:
+# expect: make: in target "unknown-modifier": while evaluating variable "UNKNOWN" with value "": Unknown modifier "Z"
+# XXX: This command is executed even though it contains parse errors.
+# expect: : unknown-modifier--eol
 	: $@-${UNKNOWN:Z}-eol
 
 end:
+# expect: : end-eol
 	: $@-eol
 
-# XXX: As of 2020-11-02, despite the parse errors, the exit status is 0.
+# XXX: Despite the parse errors, the exit status is 0.
+# expect: exit status 0

Index: src/usr.bin/make/unit-tests/directive-for-escape.exp
diff -u src/usr.bin/make/unit-tests/directive-for-escape.exp:1.25 src/usr.bin/make/unit-tests/directive-for-escape.exp:1.26
--- src/usr.bin/make/unit-tests/directive-for-escape.exp:1.25	Thu Jul  4 17:47:54 2024
+++ src/usr.bin/make/unit-tests/directive-for-escape.exp	Fri Jul  5 17:41:50 2024
@@ -1,45 +1,49 @@
 For: end for 1
 For: loop body with chars = !"#$%&'()*+,-./0-9:;<=>?@A-Z[\]_^a-z{|}~:
+# expect: make: Unclosed expression, expecting '}' for modifier "U!"" of variable "" with value "!""
+# expect+1: !"
 .  info ${:U!"#$%&'()*+,-./0-9\:;<=>?@A-Z[\\]_^a-z{|\}~}
 make: Unclosed expression, expecting '}' for modifier "U!"" of variable "" with value "!""
-make: "directive-for-escape.mk" line 19: !"
+make: "directive-for-escape.mk" line 21: !"
 For: end for 1
 For: loop body with chars = !"\\#$%&'()*+,-./0-9:;<=>?@A-Z[\]_^a-z{|}~:
+# expect: make: Unclosed expression, expecting '}' for modifier "U!"\\\\" of variable "" with value "!"\\"
+# expect+1: !"\\
 .  info ${:U!"\\\\#$%&'()*+,-./0-9\:;<=>?@A-Z[\\]_^a-z{|\}~}
 make: Unclosed expression, expecting '}' for modifier "U!"\\\\" of variable "" with value "!"\\"
-make: "directive-for-escape.mk" line 30: !"\\
+make: "directive-for-escape.mk" line 33: !"\\
 For: end for 1
 For: loop body with i = $:
 .  info ${:U\$}
-make: "directive-for-escape.mk" line 45: $
+make: "directive-for-escape.mk" line 47: $
 For: loop body with i = ${V}:
 .  info ${:U${V}}
-make: "directive-for-escape.mk" line 45: value
+make: "directive-for-escape.mk" line 47: value
 For: loop body with i = ${V:=-with-modifier}:
 .  info ${:U${V:=-with-modifier}}
-make: "directive-for-escape.mk" line 45: value-with-modifier
+make: "directive-for-escape.mk" line 47: value-with-modifier
 For: loop body with i = $(V):
 .  info ${:U$(V)}
-make: "directive-for-escape.mk" line 45: value
+make: "directive-for-escape.mk" line 47: value
 For: loop body with i = $(V:=-with-modifier):
 .  info ${:U$(V:=-with-modifier)}
-make: "directive-for-escape.mk" line 45: value-with-modifier
+make: "directive-for-escape.mk" line 47: value-with-modifier
 For: end for 1
 For: loop body with i = $:
 .  info ${:U\$}
-make: "directive-for-escape.mk" line 60: $
+make: "directive-for-escape.mk" line 62: $
 For: loop body with i = ${V}:
 .  info ${:U${V}}
-make: "directive-for-escape.mk" line 60: value
+make: "directive-for-escape.mk" line 62: value
 For: loop body with i = ${V:=-with-modifier}:
 .  info ${:U${V:=-with-modifier}}
-make: "directive-for-escape.mk" line 60: value-with-modifier
+make: "directive-for-escape.mk" line 62: value-with-modifier
 For: loop body with i = $(V):
 .  info ${:U$(V)}
-make: "directive-for-escape.mk" line 60: value
+make: "directive-for-escape.mk" line 62: value
 For: loop body with i = $(V:=-with-modifier):
 .  info ${:U$(V:=-with-modifier)}
-make: "directive-for-escape.mk" line 60: value-with-modifier
+make: "directive-for-escape.mk" line 62: value-with-modifier
 For: end for 1
 For: loop body with i = ${UNDEF:U\$\$:
 # ${:U\${UNDEF\:U\\$\\$}
@@ -50,24 +54,24 @@ For: loop body with i = end}:
 For: end for 1
 For: loop body with i = ${UNDEF:U\$\$:
 .  info ${:U\${UNDEF\:U\\$\\$}
-make: "directive-for-escape.mk" line 115: ${UNDEF:U\backslash$
+make: "directive-for-escape.mk" line 117: ${UNDEF:U\backslash$
 For: loop body with i = {{}}:
 .  info ${:U{{\}\}}
-make: "directive-for-escape.mk" line 115: {{}}
+make: "directive-for-escape.mk" line 117: {{}}
 For: loop body with i = end}:
 .  info ${:Uend\}}
-make: "directive-for-escape.mk" line 115: end}
+make: "directive-for-escape.mk" line 117: end}
 For: end for 1
 For: loop body with i = begin<${UNDEF:Ufallback:N{{{}}}}>end:
 .  info ${:Ubegin<${UNDEF:Ufallback:N{{{}}}}>end}
-make: "directive-for-escape.mk" line 136: begin<fallback>end
+make: "directive-for-escape.mk" line 138: begin<fallback>end
 For: end for 1
 For: loop body with i = $:
 .  info ${:U\$}
-make: "directive-for-escape.mk" line 145: $
-make: "directive-for-escape.mk" line 154: invalid character ':' in .for loop variable name
+make: "directive-for-escape.mk" line 147: $
+make: "directive-for-escape.mk" line 156: invalid character ':' in .for loop variable name
 For: end for 1
-make: "directive-for-escape.mk" line 164: invalid character '}' in .for loop variable name
+make: "directive-for-escape.mk" line 166: invalid character '}' in .for loop variable name
 For: end for 1
 For: end for 1
 For: loop body with i = inner:
@@ -81,50 +85,50 @@ For: loop body with i = inner:
 .  info .     $${i2}: ${i2}
 .  info .     $${i,}: ${i,}
 .  info .  adjacent: ${:Uinner}${:Uinner}${:Uinner:M*}${:Uinner}
-make: "directive-for-escape.mk" line 173: .        $i: inner
-make: "directive-for-escape.mk" line 174: .      ${i}: inner
-make: "directive-for-escape.mk" line 175: .   ${i:M*}: inner
-make: "directive-for-escape.mk" line 176: .      $(i): inner
-make: "directive-for-escape.mk" line 177: .   $(i:M*): inner
-make: "directive-for-escape.mk" line 178: . ${i${:U}}: outer
-make: "directive-for-escape.mk" line 179: .    ${i\}}: inner}
-make: "directive-for-escape.mk" line 180: .     ${i2}: two
-make: "directive-for-escape.mk" line 181: .     ${i,}: comma
-make: "directive-for-escape.mk" line 182: .  adjacent: innerinnerinnerinner
-make: "directive-for-escape.mk" line 201: invalid character '$' in .for loop variable name
+make: "directive-for-escape.mk" line 175: .        $i: inner
+make: "directive-for-escape.mk" line 176: .      ${i}: inner
+make: "directive-for-escape.mk" line 177: .   ${i:M*}: inner
+make: "directive-for-escape.mk" line 178: .      $(i): inner
+make: "directive-for-escape.mk" line 179: .   $(i:M*): inner
+make: "directive-for-escape.mk" line 180: . ${i${:U}}: outer
+make: "directive-for-escape.mk" line 181: .    ${i\}}: inner}
+make: "directive-for-escape.mk" line 182: .     ${i2}: two
+make: "directive-for-escape.mk" line 183: .     ${i,}: comma
+make: "directive-for-escape.mk" line 184: .  adjacent: innerinnerinnerinner
+make: "directive-for-escape.mk" line 203: invalid character '$' in .for loop variable name
 For: end for 1
-make: "directive-for-escape.mk" line 213: eight  and no cents.
+make: "directive-for-escape.mk" line 215: eight  and no cents.
 For: end for 1
-make: "directive-for-escape.mk" line 226: newline in .for value
-	in .for loop from directive-for-escape.mk:226 with i = "
+make: "directive-for-escape.mk" line 228: newline in .for value
+	in .for loop from directive-for-escape.mk:228 with i = "
 "
-make: "directive-for-escape.mk" line 226: newline in .for value
-	in .for loop from directive-for-escape.mk:226 with i = "
+make: "directive-for-escape.mk" line 228: newline in .for value
+	in .for loop from directive-for-escape.mk:228 with i = "
 "
 For: loop body with i = "
 ":
 .  info short: ${:U" "}
 .  info long: ${:U" "}
-make: "directive-for-escape.mk" line 227: short: " "
-make: "directive-for-escape.mk" line 228: long: " "
+make: "directive-for-escape.mk" line 229: short: " "
+make: "directive-for-escape.mk" line 230: long: " "
 For: end for 1
 For: loop body with i = "
 ":
-Parsing line 244: .for i in "${.newline}"
+Parsing line 246: .for i in "${.newline}"
 For: end for 1
-Parse_PushInput: .for loop in directive-for-escape.mk, line 244
-make: "directive-for-escape.mk" line 244: newline in .for value
-	in .for loop from directive-for-escape.mk:244 with i = "
+Parse_PushInput: .for loop in directive-for-escape.mk, line 246
+make: "directive-for-escape.mk" line 246: newline in .for value
+	in .for loop from directive-for-escape.mk:246 with i = "
 "
 For: loop body with i = "
 ":
 : ${:U" "}
 SetFilenameVars: ${.PARSEDIR} = <some-dir> ${.PARSEFILE} = `directive-for-escape.mk'
-Parsing line 245: : ${:U" "}
+Parsing line 247: : ${:U" "}
 ParseDependency(: " ")
-ParseEOF: returning to file directive-for-escape.mk, line 247
+ParseEOF: returning to file directive-for-escape.mk, line 249
 SetFilenameVars: ${.PARSEDIR} = <some-dir> ${.PARSEFILE} = `directive-for-escape.mk'
-Parsing line 247: .MAKEFLAGS: -d0
+Parsing line 249: .MAKEFLAGS: -d0
 ParseDependency(.MAKEFLAGS: -d0)
 For: end for 1
 For: loop body with i = #:

Index: src/usr.bin/make/unit-tests/directive-for-escape.mk
diff -u src/usr.bin/make/unit-tests/directive-for-escape.mk:1.23 src/usr.bin/make/unit-tests/directive-for-escape.mk:1.24
--- src/usr.bin/make/unit-tests/directive-for-escape.mk:1.23	Sun Nov 19 22:32:44 2023
+++ src/usr.bin/make/unit-tests/directive-for-escape.mk	Fri Jul  5 17:41:50 2024
@@ -1,4 +1,4 @@
-# $NetBSD: directive-for-escape.mk,v 1.23 2023/11/19 22:32:44 rillig Exp $
+# $NetBSD: directive-for-escape.mk,v 1.24 2024/07/05 17:41:50 rillig Exp $
 #
 # Test escaping of special characters in the iteration values of a .for loop.
 # These values get expanded later using the :U variable modifier, and this
@@ -16,9 +16,10 @@ ASCII=	!"\#$$%&'()*+,-./0-9:;<=>?@A-Z[\]
 # the loop.  Not only would it need the escaping for the variable modifier
 # ':U' but also the escaping for the line-end comment.
 .for chars in ${ASCII}
+# expect: make: Unclosed expression, expecting '}' for modifier "U!"" of variable "" with value "!""
+# expect+1: !"
 .  info ${chars}
 .endfor
-# expect-2: !"
 
 # As of 2020-12-31, using 2 backslashes before be '#' would treat the '#'
 # as comment character.  Using 3 backslashes doesn't help either since
@@ -27,9 +28,10 @@ ASCII=	!"\#$$%&'()*+,-./0-9:;<=>?@A-Z[\]
 # at all.
 ASCII.2020-12-31=	!"\\\#$$%&'()*+,-./0-9:;<=>?@A-Z[\]_^a-z{|}~
 .for chars in ${ASCII.2020-12-31}
+# expect: make: Unclosed expression, expecting '}' for modifier "U!"\\\\" of variable "" with value "!"\\"
+# expect+1: !"\\
 .  info ${chars}
 .endfor
-# expect-2: !"\\
 
 # Cover the code in ExprLen.
 #

Index: src/usr.bin/make/unit-tests/moderrs.mk
diff -u src/usr.bin/make/unit-tests/moderrs.mk:1.35 src/usr.bin/make/unit-tests/moderrs.mk:1.36
--- src/usr.bin/make/unit-tests/moderrs.mk:1.35	Thu Jul  4 18:53:37 2024
+++ src/usr.bin/make/unit-tests/moderrs.mk	Fri Jul  5 17:41:50 2024
@@ -1,4 +1,4 @@
-# $NetBSD: moderrs.mk,v 1.35 2024/07/04 18:53:37 rillig Exp $
+# $NetBSD: moderrs.mk,v 1.36 2024/07/05 17:41:50 rillig Exp $
 #
 # various modifier error tests
 
@@ -168,10 +168,13 @@ mod-remember-parse: print-footer
 
 mod-sysv-parse: print-footer
 # expect: make: in target "mod-sysv-parse": while evaluating variable "FIB" with value "1 1 2 3 5 8 13 21 34": Unknown modifier "3"
+# expect: make: Unclosed expression, expecting '}' for modifier "3" of variable "FIB" with value ""
 	@echo ${FIB:3
 # expect: make: in target "mod-sysv-parse": while evaluating variable "FIB" with value "1 1 2 3 5 8 13 21 34": Unknown modifier "3="
+# expect: make: Unclosed expression, expecting '}' for modifier "3=" of variable "FIB" with value ""
 	@echo ${FIB:3=
 # expect: make: in target "mod-sysv-parse": while evaluating variable "FIB" with value "1 1 2 3 5 8 13 21 34": Unknown modifier "3=x3"
+# expect: make: Unclosed expression, expecting '}' for modifier "3=x3" of variable "FIB" with value ""
 	@echo ${FIB:3=x3
 	@echo ${FIB:3=x3}	# ok
 

Index: src/usr.bin/make/unit-tests/varmisc.mk
diff -u src/usr.bin/make/unit-tests/varmisc.mk:1.33 src/usr.bin/make/unit-tests/varmisc.mk:1.34
--- src/usr.bin/make/unit-tests/varmisc.mk:1.33	Thu Oct 19 18:24:33 2023
+++ src/usr.bin/make/unit-tests/varmisc.mk	Fri Jul  5 17:41:50 2024
@@ -1,4 +1,4 @@
-# $NetBSD: varmisc.mk,v 1.33 2023/10/19 18:24:33 rillig Exp $
+# $NetBSD: varmisc.mk,v 1.34 2024/07/05 17:41:50 rillig Exp $
 #
 # Miscellaneous variable tests.
 
@@ -190,13 +190,22 @@ target2-flags: target2.c
 
 varerror-unclosed:
 	@echo $@:begin
+# expect: make: in target "varerror-unclosed": Unclosed variable ""
 	@echo $(
+# expect: make: in target "varerror-unclosed": Unclosed variable "UNCLOSED"
 	@echo $(UNCLOSED
+# expect: make: in target "varerror-unclosed": Unclosed variable "UNCLOSED"
 	@echo ${UNCLOSED
+# expect: make: Unclosed expression, expecting '}' for modifier "M${PATTERN" of variable "UNCLOSED" with value ""
 	@echo ${UNCLOSED:M${PATTERN
+# expect: make: in target "varerror-unclosed": Unclosed variable "param"
+# expect: make: in target "varerror-unclosed": Unclosed variable "UNCLOSED."
 	@echo ${UNCLOSED.${param
 	@echo $
 .for i in 1 2 3
+# expect: make: in target "varerror-unclosed": Unclosed variable "UNCLOSED.1"
+# expect: make: in target "varerror-unclosed": Unclosed variable "UNCLOSED.2"
+# expect: make: in target "varerror-unclosed": Unclosed variable "UNCLOSED.3"
 	@echo ${UNCLOSED.${i}
 .endfor
 	@echo ${UNCLOSED_INDIR_2}

Index: src/usr.bin/make/unit-tests/varmod-edge.exp
diff -u src/usr.bin/make/unit-tests/varmod-edge.exp:1.20 src/usr.bin/make/unit-tests/varmod-edge.exp:1.21
--- src/usr.bin/make/unit-tests/varmod-edge.exp:1.20	Thu Jul  4 20:18:40 2024
+++ src/usr.bin/make/unit-tests/varmod-edge.exp	Fri Jul  5 17:41:50 2024
@@ -1,30 +1,30 @@
-make: "varmod-edge.mk" line 185: ok M-paren
-make: "varmod-edge.mk" line 185: ok M-mixed
-make: "varmod-edge.mk" line 185: ok M-unescape
+make: "varmod-edge.mk" line 186: ok M-paren
+make: "varmod-edge.mk" line 186: ok M-mixed
+make: "varmod-edge.mk" line 186: ok M-unescape
 make: Unclosed expression, expecting '}' for modifier "U*)" of variable "" with value "*)"
-make: "varmod-edge.mk" line 185: ok M-nest-mix
-make: "varmod-edge.mk" line 185: ok M-nest-brk
-make: "varmod-edge.mk" line 185: ok M-pat-err
-make: "varmod-edge.mk" line 185: ok M-bsbs
-make: "varmod-edge.mk" line 185: ok M-bs1-par
-make: "varmod-edge.mk" line 185: ok M-bs2-par
-make: "varmod-edge.mk" line 185: ok M-128
-make: "varmod-edge.mk" line 185: ok eq-ext
-make: "varmod-edge.mk" line 185: ok eq-q
-make: "varmod-edge.mk" line 185: ok eq-bs
+make: "varmod-edge.mk" line 186: ok M-nest-mix
+make: "varmod-edge.mk" line 186: ok M-nest-brk
+make: "varmod-edge.mk" line 186: ok M-pat-err
+make: "varmod-edge.mk" line 186: ok M-bsbs
+make: "varmod-edge.mk" line 186: ok M-bs1-par
+make: "varmod-edge.mk" line 186: ok M-bs2-par
+make: "varmod-edge.mk" line 186: ok M-128
+make: "varmod-edge.mk" line 186: ok eq-ext
+make: "varmod-edge.mk" line 186: ok eq-q
+make: "varmod-edge.mk" line 186: ok eq-bs
 make: "varmod-edge.mk" line 168: while evaluating variable "MOD.eq-esc" with value "${INP.eq-esc:a\=b}": while evaluating variable "INP.eq-esc" with value "file.c file...": Unfinished modifier ('=' missing)
 	in .for loop from varmod-edge.mk:164 with test = eq-esc
-make: "varmod-edge.mk" line 185: ok eq-esc
-make: "varmod-edge.mk" line 185: ok colon
+make: "varmod-edge.mk" line 186: ok eq-esc
+make: "varmod-edge.mk" line 186: ok colon
 make: "varmod-edge.mk" line 168: while evaluating variable "MOD.colons" with value "${INP.colons::::}": while evaluating variable "INP.colons" with value "value": Unknown modifier ":"
 	in .for loop from varmod-edge.mk:164 with test = colons
 make: "varmod-edge.mk" line 168: while evaluating variable "MOD.colons" with value "${INP.colons::::}": while evaluating variable "INP.colons" with value "": Unknown modifier ":"
 	in .for loop from varmod-edge.mk:164 with test = colons
-make: "varmod-edge.mk" line 185: ok colons
-make: "varmod-edge.mk" line 196: while evaluating "${:Z}": Unknown modifier "Z"
-make: "varmod-edge.mk" line 196: Malformed conditional (${:Z})
-make: "varmod-edge.mk" line 210: while evaluating "${:S,}": Unfinished modifier (',' missing)
-make: "varmod-edge.mk" line 210: Malformed conditional (${:S,})
+make: "varmod-edge.mk" line 186: ok colons
+make: "varmod-edge.mk" line 197: while evaluating "${:Z}": Unknown modifier "Z"
+make: "varmod-edge.mk" line 197: Malformed conditional (${:Z})
+make: "varmod-edge.mk" line 211: while evaluating "${:S,}": Unfinished modifier (',' missing)
+make: "varmod-edge.mk" line 211: Malformed conditional (${:S,})
 make: Fatal errors encountered -- cannot continue
 make: stopped making "all" in unit-tests
 exit status 1

Index: src/usr.bin/make/unit-tests/varmod-edge.mk
diff -u src/usr.bin/make/unit-tests/varmod-edge.mk:1.22 src/usr.bin/make/unit-tests/varmod-edge.mk:1.23
--- src/usr.bin/make/unit-tests/varmod-edge.mk:1.22	Thu Jul  4 17:47:54 2024
+++ src/usr.bin/make/unit-tests/varmod-edge.mk	Fri Jul  5 17:41:50 2024
@@ -1,4 +1,4 @@
-# $NetBSD: varmod-edge.mk,v 1.22 2024/07/04 17:47:54 rillig Exp $
+# $NetBSD: varmod-edge.mk,v 1.23 2024/07/05 17:41:50 rillig Exp $
 #
 # Tests for edge cases in variable modifiers.
 #
@@ -166,9 +166,10 @@ EXP.colons=	# empty
 # expect+2: while evaluating variable "MOD.colons" with value "${INP.colons::::}": while evaluating variable "INP.colons" with value "value": Unknown modifier ":"
 # expect+1: while evaluating variable "MOD.colons" with value "${INP.colons::::}": while evaluating variable "INP.colons" with value "": Unknown modifier ":"
 .  if ${MOD.${test}} == ${EXP.${test}}
-# expect+16: ok M-paren
-# expect+15: ok M-mixed
-# expect+14: ok M-unescape
+# expect+17: ok M-paren
+# expect+16: ok M-mixed
+# expect+15: ok M-unescape
+# expect: make: Unclosed expression, expecting '}' for modifier "U*)" of variable "" with value "*)"
 # expect+13: ok M-nest-mix
 # expect+12: ok M-nest-brk
 # expect+11: ok M-pat-err

Index: src/usr.bin/make/unit-tests/varmod-order.exp
diff -u src/usr.bin/make/unit-tests/varmod-order.exp:1.11 src/usr.bin/make/unit-tests/varmod-order.exp:1.12
--- src/usr.bin/make/unit-tests/varmod-order.exp:1.11	Thu Jul  4 20:18:40 2024
+++ src/usr.bin/make/unit-tests/varmod-order.exp	Fri Jul  5 17:41:50 2024
@@ -5,22 +5,22 @@ make: "varmod-order.mk" line 23: Undefin
 make: Unclosed expression, expecting '}' for modifier "O" of variable "WORDS" with value "eight five four nine one seven six ten three two"
 make: Unclosed expression, expecting '}' for modifier "On" of variable "NUMBERS" with value "1 2 3 4 5 6 7 8 9 10"
 make: Unclosed expression, expecting '}' for modifier "Onr" of variable "NUMBERS" with value "10 9 8 7 6 5 4 3 2 1"
-make: "varmod-order.mk" line 35: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Oxn"
-make: "varmod-order.mk" line 35: Malformed conditional (${NUMBERS:Oxn})
-make: "varmod-order.mk" line 45: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":On_typo"
-make: "varmod-order.mk" line 45: Malformed conditional (${NUMBERS:On_typo})
-make: "varmod-order.mk" line 55: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Onr_typo"
-make: "varmod-order.mk" line 55: Malformed conditional (${NUMBERS:Onr_typo})
-make: "varmod-order.mk" line 65: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Orn_typo"
-make: "varmod-order.mk" line 65: Malformed conditional (${NUMBERS:Orn_typo})
-make: "varmod-order.mk" line 77: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Onn"
-make: "varmod-order.mk" line 77: Malformed conditional (${NUMBERS:Onn})
-make: "varmod-order.mk" line 87: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Onrr"
-make: "varmod-order.mk" line 87: Malformed conditional (${NUMBERS:Onrr})
-make: "varmod-order.mk" line 97: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Orrn"
-make: "varmod-order.mk" line 97: Malformed conditional (${NUMBERS:Orrn})
-make: "varmod-order.mk" line 112: while evaluating variable "SWITCH" with value "On": Bad modifier ":On=Off"
-make: "varmod-order.mk" line 112: Malformed conditional (${SWITCH:On=Off} != "Off")
+make: "varmod-order.mk" line 38: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Oxn"
+make: "varmod-order.mk" line 38: Malformed conditional (${NUMBERS:Oxn})
+make: "varmod-order.mk" line 48: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":On_typo"
+make: "varmod-order.mk" line 48: Malformed conditional (${NUMBERS:On_typo})
+make: "varmod-order.mk" line 58: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Onr_typo"
+make: "varmod-order.mk" line 58: Malformed conditional (${NUMBERS:Onr_typo})
+make: "varmod-order.mk" line 68: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Orn_typo"
+make: "varmod-order.mk" line 68: Malformed conditional (${NUMBERS:Orn_typo})
+make: "varmod-order.mk" line 80: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Onn"
+make: "varmod-order.mk" line 80: Malformed conditional (${NUMBERS:Onn})
+make: "varmod-order.mk" line 90: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Onrr"
+make: "varmod-order.mk" line 90: Malformed conditional (${NUMBERS:Onrr})
+make: "varmod-order.mk" line 100: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Orrn"
+make: "varmod-order.mk" line 100: Malformed conditional (${NUMBERS:Orrn})
+make: "varmod-order.mk" line 115: while evaluating variable "SWITCH" with value "On": Bad modifier ":On=Off"
+make: "varmod-order.mk" line 115: Malformed conditional (${SWITCH:On=Off} != "Off")
 make: Fatal errors encountered -- cannot continue
 make: stopped making "all" in unit-tests
 exit status 1

Index: src/usr.bin/make/unit-tests/varmod-order.mk
diff -u src/usr.bin/make/unit-tests/varmod-order.mk:1.12 src/usr.bin/make/unit-tests/varmod-order.mk:1.13
--- src/usr.bin/make/unit-tests/varmod-order.mk:1.12	Thu Jul  4 18:53:37 2024
+++ src/usr.bin/make/unit-tests/varmod-order.mk	Fri Jul  5 17:41:50 2024
@@ -1,4 +1,4 @@
-# $NetBSD: varmod-order.mk,v 1.12 2024/07/04 18:53:37 rillig Exp $
+# $NetBSD: varmod-order.mk,v 1.13 2024/07/05 17:41:50 rillig Exp $
 #
 # Tests for the :O variable modifier and its variants, which either sort the
 # words of the value or shuffle them.
@@ -23,8 +23,11 @@ _:=	${WORDS:OX}
 _:=	${WORDS:OxXX}
 
 # Missing closing brace, to cover the error handling code.
+# expect: make: Unclosed expression, expecting '}' for modifier "O" of variable "WORDS" with value "eight five four nine one seven six ten three two"
 _:=	${WORDS:O
+# expect: make: Unclosed expression, expecting '}' for modifier "On" of variable "NUMBERS" with value "1 2 3 4 5 6 7 8 9 10"
 _:=	${NUMBERS:On
+# expect: make: Unclosed expression, expecting '}' for modifier "Onr" of variable "NUMBERS" with value "10 9 8 7 6 5 4 3 2 1"
 _:=	${NUMBERS:Onr
 
 # Shuffling numerically doesn't make sense, so don't allow 'x' and 'n' to be

Index: src/usr.bin/make/unit-tests/varparse-errors.mk
diff -u src/usr.bin/make/unit-tests/varparse-errors.mk:1.14 src/usr.bin/make/unit-tests/varparse-errors.mk:1.15
--- src/usr.bin/make/unit-tests/varparse-errors.mk:1.14	Thu Jul  4 18:53:37 2024
+++ src/usr.bin/make/unit-tests/varparse-errors.mk	Fri Jul  5 17:41:50 2024
@@ -1,4 +1,4 @@
-# $NetBSD: varparse-errors.mk,v 1.14 2024/07/04 18:53:37 rillig Exp $
+# $NetBSD: varparse-errors.mk,v 1.15 2024/07/05 17:41:50 rillig Exp $
 
 # Tests for parsing and evaluating all kinds of expressions.
 #
@@ -79,17 +79,31 @@ _:=	${:U:OX:U${IND}} ${:U:OX:U${IND}}
 # Before var.c 1.032 from 2022-08-24, make complained about 'Unknown modifier'
 # or 'Bad modifier' when in fact the modifier was entirely correct, it was
 # just not delimited by either ':' or '}' but instead by '\0'.
+# expect: make: Unclosed expression, expecting '}' for modifier "Q" of variable "" with value ""
 UNCLOSED:=	${:U:Q
+# expect: make: Unclosed expression, expecting '}' for modifier "sh" of variable "" with value ""
 UNCLOSED:=	${:U:sh
+# expect: make: Unclosed expression, expecting '}' for modifier "tA" of variable "" with value ""
 UNCLOSED:=	${:U:tA
+# expect: make: Unclosed expression, expecting '}' for modifier "tsX" of variable "" with value ""
 UNCLOSED:=	${:U:tsX
+# expect: make: Unclosed expression, expecting '}' for modifier "ts" of variable "" with value ""
 UNCLOSED:=	${:U:ts
+# expect: make: Unclosed expression, expecting '}' for modifier "ts\040" of variable "" with value ""
 UNCLOSED:=	${:U:ts\040
+# expect: make: Unclosed expression, expecting '}' for modifier "u" of variable "" with value ""
 UNCLOSED:=	${:U:u
+# expect: make: Unclosed expression, expecting '}' for modifier "H" of variable "" with value "."
 UNCLOSED:=	${:U:H
+# expect: make: Unclosed expression, expecting '}' for modifier "[1]" of variable "" with value ""
 UNCLOSED:=	${:U:[1]
+# expect: make: Unclosed expression, expecting '}' for modifier "hash" of variable "" with value "b2af338b"
 UNCLOSED:=	${:U:hash
+# expect: make: Unclosed expression, expecting '}' for modifier "range" of variable "" with value "1"
 UNCLOSED:=	${:U:range
+# expect: make: Unclosed expression, expecting '}' for modifier "_" of variable "" with value ""
 UNCLOSED:=	${:U:_
+# expect: make: Unclosed expression, expecting '}' for modifier "gmtime" of variable "" with value "<timestamp>"
 UNCLOSED:=	${:U:gmtime
+# expect: make: Unclosed expression, expecting '}' for modifier "localtime" of variable "" with value "<timestamp>"
 UNCLOSED:=	${:U:localtime

Reply via email to