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