Module Name: src Committed By: rillig Date: Sat Jul 20 08:54:19 UTC 2024
Modified Files: src/usr.bin/make: var.c src/usr.bin/make/unit-tests: varmod-order.exp varmod-order.mk varparse-errors.exp varparse-errors.mk Log Message: make: remove wrong error message about an undefined variable To generate a diff of this commit: cvs rdiff -u -r1.1135 -r1.1136 src/usr.bin/make/var.c cvs rdiff -u -r1.13 -r1.14 src/usr.bin/make/unit-tests/varmod-order.exp cvs rdiff -u -r1.14 -r1.15 src/usr.bin/make/unit-tests/varmod-order.mk \ src/usr.bin/make/unit-tests/varparse-errors.exp cvs rdiff -u -r1.17 -r1.18 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/var.c diff -u src/usr.bin/make/var.c:1.1135 src/usr.bin/make/var.c:1.1136 --- src/usr.bin/make/var.c:1.1135 Tue Jul 9 17:07:23 2024 +++ src/usr.bin/make/var.c Sat Jul 20 08:54:19 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: var.c,v 1.1135 2024/07/09 17:07:23 rillig Exp $ */ +/* $NetBSD: var.c,v 1.1136 2024/07/20 08:54:19 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -128,7 +128,7 @@ #include "metachar.h" /* "@(#)var.c 8.3 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: var.c,v 1.1135 2024/07/09 17:07:23 rillig Exp $"); +MAKE_RCSID("$NetBSD: var.c,v 1.1136 2024/07/20 08:54:19 rillig Exp $"); /* * Variables are defined using one of the VAR=value assignments. Their @@ -4677,8 +4677,7 @@ VarSubstDollarDollar(const char **pp, Bu } static void -VarSubstExpr(const char **pp, Buffer *buf, GNode *scope, - VarEvalMode emode, bool *inout_errorReported) +VarSubstExpr(const char **pp, Buffer *buf, GNode *scope, VarEvalMode emode) { const char *p = *pp; const char *nested_p = p; @@ -4686,28 +4685,8 @@ VarSubstExpr(const char **pp, Buffer *bu /* TODO: handle errors */ if (val.str == var_Error || val.str == varUndefined) { - if (!VarEvalMode_ShouldKeepUndef(emode)) { - p = nested_p; - } else if (val.str == var_Error) { - - /* - * FIXME: The condition 'val.str == var_Error' doesn't - * mean there was an undefined variable. It could - * equally well be a parse error; see - * unit-tests/varmod-order.mk. - */ - - /* - * If variable is undefined, complain and skip the - * variable. The complaint will stop us from doing - * anything when the file is parsed. - */ - if (!*inout_errorReported) { - Parse_Error(PARSE_FATAL, - "Undefined variable \"%.*s\"", - (int)(nested_p - p), p); - *inout_errorReported = true; - } + if (!VarEvalMode_ShouldKeepUndef(emode) + || val.str == var_Error) { p = nested_p; } else { /* @@ -4761,20 +4740,13 @@ Var_Subst(const char *str, GNode *scope, const char *p = str; Buffer res; - /* - * Set true if an error has already been reported, to prevent a - * plethora of messages when recursing - */ - static bool errorReported; - Buf_Init(&res); - errorReported = false; while (*p != '\0') { if (p[0] == '$' && p[1] == '$') VarSubstDollarDollar(&p, &res, emode); else if (p[0] == '$') - VarSubstExpr(&p, &res, scope, emode, &errorReported); + VarSubstExpr(&p, &res, scope, emode); else VarSubstPlain(&p, &res); } Index: src/usr.bin/make/unit-tests/varmod-order.exp diff -u src/usr.bin/make/unit-tests/varmod-order.exp:1.13 src/usr.bin/make/unit-tests/varmod-order.exp:1.14 --- src/usr.bin/make/unit-tests/varmod-order.exp:1.13 Fri Jul 5 18:59:33 2024 +++ src/usr.bin/make/unit-tests/varmod-order.exp Sat Jul 20 08:54:19 2024 @@ -1,26 +1,24 @@ -make: "varmod-order.mk" line 17: while evaluating variable "WORDS" with value "one two three four five six seven eight nine ten": Bad modifier ":OX" -make: "varmod-order.mk" line 17: Undefined variable "${WORDS:OX" -make: "varmod-order.mk" line 23: while evaluating variable "WORDS" with value "one two three four five six seven eight nine ten": Bad modifier ":OxXX" -make: "varmod-order.mk" line 23: Undefined variable "${WORDS:Ox" -make: "varmod-order.mk" line 27: while evaluating variable "WORDS" with value "eight five four nine one seven six ten three two": Unclosed expression, expecting '}' for modifier "O" -make: "varmod-order.mk" line 29: while evaluating variable "NUMBERS" with value "1 2 3 4 5 6 7 8 9 10": Unclosed expression, expecting '}' for modifier "On" -make: "varmod-order.mk" line 31: while evaluating variable "NUMBERS" with value "10 9 8 7 6 5 4 3 2 1": Unclosed expression, expecting '}' for modifier "Onr" -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: "varmod-order.mk" line 14: while evaluating variable "WORDS" with value "one two three four five six seven eight nine ten": Bad modifier ":OX" +make: "varmod-order.mk" line 17: while evaluating variable "WORDS" with value "one two three four five six seven eight nine ten": Bad modifier ":OxXX" +make: "varmod-order.mk" line 20: while evaluating variable "WORDS" with value "eight five four nine one seven six ten three two": Unclosed expression, expecting '}' for modifier "O" +make: "varmod-order.mk" line 22: while evaluating variable "NUMBERS" with value "1 2 3 4 5 6 7 8 9 10": Unclosed expression, expecting '}' for modifier "On" +make: "varmod-order.mk" line 24: while evaluating variable "NUMBERS" with value "10 9 8 7 6 5 4 3 2 1": Unclosed expression, expecting '}' for modifier "Onr" +make: "varmod-order.mk" line 31: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Oxn" +make: "varmod-order.mk" line 31: Malformed conditional (${NUMBERS:Oxn}) +make: "varmod-order.mk" line 41: 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 41: Malformed conditional (${NUMBERS:On_typo}) +make: "varmod-order.mk" line 51: 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 51: Malformed conditional (${NUMBERS:Onr_typo}) +make: "varmod-order.mk" line 61: 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 61: Malformed conditional (${NUMBERS:Orn_typo}) +make: "varmod-order.mk" line 73: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Onn" +make: "varmod-order.mk" line 73: Malformed conditional (${NUMBERS:Onn}) +make: "varmod-order.mk" line 83: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Onrr" +make: "varmod-order.mk" line 83: Malformed conditional (${NUMBERS:Onrr}) +make: "varmod-order.mk" line 93: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Orrn" +make: "varmod-order.mk" line 93: Malformed conditional (${NUMBERS:Orrn}) +make: "varmod-order.mk" line 108: while evaluating variable "SWITCH" with value "On": Bad modifier ":On=Off" +make: "varmod-order.mk" line 108: 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.14 src/usr.bin/make/unit-tests/varmod-order.mk:1.15 --- src/usr.bin/make/unit-tests/varmod-order.mk:1.14 Fri Jul 5 18:59:33 2024 +++ src/usr.bin/make/unit-tests/varmod-order.mk Sat Jul 20 08:54:19 2024 @@ -1,4 +1,4 @@ -# $NetBSD: varmod-order.mk,v 1.14 2024/07/05 18:59:33 rillig Exp $ +# $NetBSD: varmod-order.mk,v 1.15 2024/07/20 08:54:19 rillig Exp $ # # Tests for the :O variable modifier and its variants, which either sort the # words of the value or shuffle them. @@ -10,19 +10,12 @@ NUMBERS= 8 5 4 9 1 7 6 10 3 2 # in Engli . error ${WORDS:O} .endif -# Unknown modifier "OX" -# FIXME: The error message "Undefined variable" is wrong. -# expect+2: Undefined variable "${WORDS:OX" # expect+1: while evaluating variable "WORDS" with value "one two three four five six seven eight nine ten": Bad modifier ":OX" _:= ${WORDS:OX} -# Unknown modifier "OxXX" -# FIXME: The error message "Undefined variable" is wrong. -# expect+2: Undefined variable "${WORDS:Ox" # expect+1: while evaluating variable "WORDS" with value "one two three four five six seven eight nine ten": Bad modifier ":OxXX" _:= ${WORDS:OxXX} -# Missing closing brace, to cover the error handling code. # expect+1: while evaluating variable "WORDS" with value "eight five four nine one seven six ten three two": Unclosed expression, expecting '}' for modifier "O" _:= ${WORDS:O # expect+1: while evaluating variable "NUMBERS" with value "1 2 3 4 5 6 7 8 9 10": Unclosed expression, expecting '}' for modifier "On" Index: src/usr.bin/make/unit-tests/varparse-errors.exp diff -u src/usr.bin/make/unit-tests/varparse-errors.exp:1.14 src/usr.bin/make/unit-tests/varparse-errors.exp:1.15 --- src/usr.bin/make/unit-tests/varparse-errors.exp:1.14 Fri Jul 5 19:47:22 2024 +++ src/usr.bin/make/unit-tests/varparse-errors.exp Sat Jul 20 08:54:19 2024 @@ -1,25 +1,23 @@ make: "varparse-errors.mk" line 38: while evaluating "${:U:Z}" with value "": Unknown modifier "Z" make: "varparse-errors.mk" line 47: while evaluating "${:U:Z}post" with value "": Unknown modifier "Z" -make: "varparse-errors.mk" line 75: while evaluating "${:U:OX:U${IND}} ${:U:OX:U${IND}}" with value "": Bad modifier ":OX" -make: "varparse-errors.mk" line 75: Undefined variable "${:U:OX" -make: "varparse-errors.mk" line 75: while evaluating variable "IND" with value "${:OX}": while evaluating "${:OX}" with value "": Bad modifier ":OX" -make: "varparse-errors.mk" line 75: while evaluating "${:U:OX:U${IND}}" with value "": Bad modifier ":OX" -make: "varparse-errors.mk" line 75: Undefined variable "${:U:OX" -make: "varparse-errors.mk" line 75: while evaluating variable "IND" with value "${:OX}": while evaluating "${:OX}" with value "": Bad modifier ":OX" -make: "varparse-errors.mk" line 83: while evaluating "${:U:Q" with value "": Unclosed expression, expecting '}' for modifier "Q" -make: "varparse-errors.mk" line 85: while evaluating "${:U:sh" with value "": Unclosed expression, expecting '}' for modifier "sh" -make: "varparse-errors.mk" line 87: while evaluating "${:U:tA" with value "": Unclosed expression, expecting '}' for modifier "tA" -make: "varparse-errors.mk" line 89: while evaluating "${:U:tsX" with value "": Unclosed expression, expecting '}' for modifier "tsX" -make: "varparse-errors.mk" line 91: while evaluating "${:U:ts" with value "": Unclosed expression, expecting '}' for modifier "ts" -make: "varparse-errors.mk" line 93: while evaluating "${:U:ts\040" with value "": Unclosed expression, expecting '}' for modifier "ts\040" -make: "varparse-errors.mk" line 95: while evaluating "${:U:u" with value "": Unclosed expression, expecting '}' for modifier "u" -make: "varparse-errors.mk" line 97: while evaluating "${:U:H" with value ".": Unclosed expression, expecting '}' for modifier "H" -make: "varparse-errors.mk" line 99: while evaluating "${:U:[1]" with value "": Unclosed expression, expecting '}' for modifier "[1]" -make: "varparse-errors.mk" line 101: while evaluating "${:U:hash" with value "b2af338b": Unclosed expression, expecting '}' for modifier "hash" -make: "varparse-errors.mk" line 103: while evaluating "${:U:range" with value "1": Unclosed expression, expecting '}' for modifier "range" -make: "varparse-errors.mk" line 105: while evaluating "${:U:_" with value "": Unclosed expression, expecting '}' for modifier "_" -make: "varparse-errors.mk" line 107: while evaluating "${:U:gmtime" with value "<timestamp>": Unclosed expression, expecting '}' for modifier "gmtime" -make: "varparse-errors.mk" line 109: while evaluating "${:U:localtime" with value "<timestamp>": Unclosed expression, expecting '}' for modifier "localtime" +make: "varparse-errors.mk" line 73: while evaluating "${:U:OX:U${IND}} ${:U:OX:U${IND}}" with value "": Bad modifier ":OX" +make: "varparse-errors.mk" line 73: while evaluating variable "IND" with value "${:OX}": while evaluating "${:OX}" with value "": Bad modifier ":OX" +make: "varparse-errors.mk" line 73: while evaluating "${:U:OX:U${IND}}" with value "": Bad modifier ":OX" +make: "varparse-errors.mk" line 73: while evaluating variable "IND" with value "${:OX}": while evaluating "${:OX}" with value "": Bad modifier ":OX" +make: "varparse-errors.mk" line 81: while evaluating "${:U:Q" with value "": Unclosed expression, expecting '}' for modifier "Q" +make: "varparse-errors.mk" line 83: while evaluating "${:U:sh" with value "": Unclosed expression, expecting '}' for modifier "sh" +make: "varparse-errors.mk" line 85: while evaluating "${:U:tA" with value "": Unclosed expression, expecting '}' for modifier "tA" +make: "varparse-errors.mk" line 87: while evaluating "${:U:tsX" with value "": Unclosed expression, expecting '}' for modifier "tsX" +make: "varparse-errors.mk" line 89: while evaluating "${:U:ts" with value "": Unclosed expression, expecting '}' for modifier "ts" +make: "varparse-errors.mk" line 91: while evaluating "${:U:ts\040" with value "": Unclosed expression, expecting '}' for modifier "ts\040" +make: "varparse-errors.mk" line 93: while evaluating "${:U:u" with value "": Unclosed expression, expecting '}' for modifier "u" +make: "varparse-errors.mk" line 95: while evaluating "${:U:H" with value ".": Unclosed expression, expecting '}' for modifier "H" +make: "varparse-errors.mk" line 97: while evaluating "${:U:[1]" with value "": Unclosed expression, expecting '}' for modifier "[1]" +make: "varparse-errors.mk" line 99: while evaluating "${:U:hash" with value "b2af338b": Unclosed expression, expecting '}' for modifier "hash" +make: "varparse-errors.mk" line 101: while evaluating "${:U:range" with value "1": Unclosed expression, expecting '}' for modifier "range" +make: "varparse-errors.mk" line 103: while evaluating "${:U:_" with value "": Unclosed expression, expecting '}' for modifier "_" +make: "varparse-errors.mk" line 105: while evaluating "${:U:gmtime" with value "<timestamp>": Unclosed expression, expecting '}' for modifier "gmtime" +make: "varparse-errors.mk" line 107: while evaluating "${:U:localtime" with value "<timestamp>": Unclosed expression, expecting '}' for modifier "localtime" make: Fatal errors encountered -- cannot continue make: stopped in unit-tests exit status 1 Index: src/usr.bin/make/unit-tests/varparse-errors.mk diff -u src/usr.bin/make/unit-tests/varparse-errors.mk:1.17 src/usr.bin/make/unit-tests/varparse-errors.mk:1.18 --- src/usr.bin/make/unit-tests/varparse-errors.mk:1.17 Fri Jul 5 19:47:22 2024 +++ src/usr.bin/make/unit-tests/varparse-errors.mk Sat Jul 20 08:54:19 2024 @@ -1,4 +1,4 @@ -# $NetBSD: varparse-errors.mk,v 1.17 2024/07/05 19:47:22 rillig Exp $ +# $NetBSD: varparse-errors.mk,v 1.18 2024/07/20 08:54:19 rillig Exp $ # Tests for parsing and evaluating all kinds of expressions. # @@ -66,11 +66,9 @@ VAR.${:U:Z}post= unknown modifier with t # #.MAKEFLAGS: -dv IND= ${:OX} -# expect+6: while evaluating "${:U:OX:U${IND}} ${:U:OX:U${IND}}" with value "": Bad modifier ":OX" -# expect+5: while evaluating "${:U:OX:U${IND}}" with value "": Bad modifier ":OX" -# expect+4: Undefined variable "${:U:OX" -# expect+3: while evaluating variable "IND" with value "${:OX}": while evaluating "${:OX}" with value "": Bad modifier ":OX" -# expect+2: Undefined variable "${:U:OX" +# expect+4: while evaluating "${:U:OX:U${IND}} ${:U:OX:U${IND}}" with value "": Bad modifier ":OX" +# expect+3: while evaluating "${:U:OX:U${IND}}" with value "": Bad modifier ":OX" +# expect+2: while evaluating variable "IND" with value "${:OX}": while evaluating "${:OX}" with value "": Bad modifier ":OX" # expect+1: while evaluating variable "IND" with value "${:OX}": while evaluating "${:OX}" with value "": Bad modifier ":OX" _:= ${:U:OX:U${IND}} ${:U:OX:U${IND}} #.MAKEFLAGS: -d0