Module Name:    src
Committed By:   rillig
Date:           Sun Dec 20 19:47:34 UTC 2020

Modified Files:
        src/usr.bin/make: var.c
        src/usr.bin/make/unit-tests: cond-token-string.exp opt-debug-lint.exp
            vardebug.exp varmod-edge.exp varmod-indirect.exp varmod-range.exp
            varparse-errors.exp varparse-errors.mk

Log Message:
make(1): error out on unknown variable modifiers at parse time

Before, make printed an "error message" that did not include the word
error and thus was not easily identified as such.  This "error message"
also did not influence the exit status in the default mode but only in
-dL mode.  The error message also didn't include any line number
information and was thus rude.


To generate a diff of this commit:
cvs rdiff -u -r1.753 -r1.754 src/usr.bin/make/var.c
cvs rdiff -u -r1.3 -r1.4 src/usr.bin/make/unit-tests/cond-token-string.exp
cvs rdiff -u -r1.12 -r1.13 src/usr.bin/make/unit-tests/opt-debug-lint.exp
cvs rdiff -u -r1.13 -r1.14 src/usr.bin/make/unit-tests/vardebug.exp
cvs rdiff -u -r1.9 -r1.10 src/usr.bin/make/unit-tests/varmod-edge.exp
cvs rdiff -u -r1.2 -r1.3 src/usr.bin/make/unit-tests/varmod-indirect.exp \
    src/usr.bin/make/unit-tests/varparse-errors.exp \
    src/usr.bin/make/unit-tests/varparse-errors.mk
cvs rdiff -u -r1.5 -r1.6 src/usr.bin/make/unit-tests/varmod-range.exp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/make/var.c
diff -u src/usr.bin/make/var.c:1.753 src/usr.bin/make/var.c:1.754
--- src/usr.bin/make/var.c:1.753	Sun Dec 20 19:10:53 2020
+++ src/usr.bin/make/var.c	Sun Dec 20 19:47:34 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.753 2020/12/20 19:10:53 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.754 2020/12/20 19:47:34 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -131,7 +131,7 @@
 #include "metachar.h"
 
 /*	"@(#)var.c	8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: var.c,v 1.753 2020/12/20 19:10:53 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.754 2020/12/20 19:47:34 rillig Exp $");
 
 typedef enum VarFlags {
 	VAR_NONE	= 0,
@@ -3511,7 +3511,7 @@ ApplySingleModifier(ApplyModifiersState 
 #endif
 
 	if (res == AMR_UNKNOWN) {
-		Error("Unknown modifier '%c'", *mod);
+		Parse_Error(PARSE_FATAL, "Unknown modifier '%c'", *mod);
 		/*
 		 * Guess the end of the current modifier.
 		 * XXX: Skipping the rest of the modifier hides

Index: src/usr.bin/make/unit-tests/cond-token-string.exp
diff -u src/usr.bin/make/unit-tests/cond-token-string.exp:1.3 src/usr.bin/make/unit-tests/cond-token-string.exp:1.4
--- src/usr.bin/make/unit-tests/cond-token-string.exp:1.3	Wed Nov 11 07:10:19 2020
+++ src/usr.bin/make/unit-tests/cond-token-string.exp	Sun Dec 20 19:47:34 2020
@@ -1,4 +1,4 @@
-make: Unknown modifier 'Z'
+make: "cond-token-string.mk" line 9: Unknown modifier 'Z'
 make: "cond-token-string.mk" line 9: Malformed conditional ("" != "${:Uvalue:Z}")
 make: "cond-token-string.mk" line 18: xvalue is not defined.
 make: "cond-token-string.mk" line 24: Malformed conditional (x${:Uvalue} == "")

Index: src/usr.bin/make/unit-tests/opt-debug-lint.exp
diff -u src/usr.bin/make/unit-tests/opt-debug-lint.exp:1.12 src/usr.bin/make/unit-tests/opt-debug-lint.exp:1.13
--- src/usr.bin/make/unit-tests/opt-debug-lint.exp:1.12	Sun Dec 20 19:10:53 2020
+++ src/usr.bin/make/unit-tests/opt-debug-lint.exp	Sun Dec 20 19:47:34 2020
@@ -2,7 +2,7 @@ make: "opt-debug-lint.mk" line 19: Varia
 make: "opt-debug-lint.mk" line 41: Variable "UNDEF" is undefined
 make: "opt-debug-lint.mk" line 61: Missing delimiter ':' after modifier "L"
 make: "opt-debug-lint.mk" line 61: Missing delimiter ':' after modifier "P"
-make: Unknown modifier '$'
+make: "opt-debug-lint.mk" line 69: Unknown modifier '$'
 make: Fatal errors encountered -- cannot continue
 make: stopped in unit-tests
 exit status 1

Index: src/usr.bin/make/unit-tests/vardebug.exp
diff -u src/usr.bin/make/unit-tests/vardebug.exp:1.13 src/usr.bin/make/unit-tests/vardebug.exp:1.14
--- src/usr.bin/make/unit-tests/vardebug.exp:1.13	Tue Nov 17 20:27:35 2020
+++ src/usr.bin/make/unit-tests/vardebug.exp	Sun Dec 20 19:47:34 2020
@@ -71,7 +71,7 @@ Var_Parse: ${:Uvariable:unknown} with VA
 Applying ${:U...} to "" (VARE_UNDEFERR|VARE_WANTRES, none, VEF_UNDEF)
 Result of ${:Uvariable} is "variable" (VARE_UNDEFERR|VARE_WANTRES, none, VEF_UNDEF|VEF_DEF)
 Applying ${:u...} to "variable" (VARE_UNDEFERR|VARE_WANTRES, none, VEF_UNDEF|VEF_DEF)
-make: Unknown modifier 'u'
+make: "vardebug.mk" line 44: Unknown modifier 'u'
 Result of ${:unknown} is error (VARE_UNDEFERR|VARE_WANTRES, none, VEF_UNDEF|VEF_DEF)
 make: "vardebug.mk" line 44: Malformed conditional (${:Uvariable:unknown})
 Var_Parse: ${UNDEFINED} with VARE_UNDEFERR|VARE_WANTRES

Index: src/usr.bin/make/unit-tests/varmod-edge.exp
diff -u src/usr.bin/make/unit-tests/varmod-edge.exp:1.9 src/usr.bin/make/unit-tests/varmod-edge.exp:1.10
--- src/usr.bin/make/unit-tests/varmod-edge.exp:1.9	Sun Dec 20 19:37:23 2020
+++ src/usr.bin/make/unit-tests/varmod-edge.exp	Sun Dec 20 19:47:34 2020
@@ -15,8 +15,9 @@ make: "varmod-edge.mk" line 166: ok eq-b
 make: Unfinished modifier for INP.eq-esc ('=' missing)
 make: "varmod-edge.mk" line 166: ok eq-esc
 make: "varmod-edge.mk" line 166: ok colon
-make: Unknown modifier ':'
-make: Unknown modifier ':'
+make: "varmod-edge.mk" line 165: Unknown modifier ':'
+make: "varmod-edge.mk" line 165: Unknown modifier ':'
 make: "varmod-edge.mk" line 166: ok colons
-ok
-exit status 0
+make: Fatal errors encountered -- cannot continue
+make: stopped in unit-tests
+exit status 1

Index: src/usr.bin/make/unit-tests/varmod-indirect.exp
diff -u src/usr.bin/make/unit-tests/varmod-indirect.exp:1.2 src/usr.bin/make/unit-tests/varmod-indirect.exp:1.3
--- src/usr.bin/make/unit-tests/varmod-indirect.exp:1.2	Sun Dec 20 19:29:06 2020
+++ src/usr.bin/make/unit-tests/varmod-indirect.exp	Sun Dec 20 19:47:34 2020
@@ -1,2 +1,4 @@
-make: Unknown modifier '$'
-exit status 0
+make: "varmod-indirect.mk" line 13: Unknown modifier '$'
+make: Fatal errors encountered -- cannot continue
+make: stopped in unit-tests
+exit status 1
Index: src/usr.bin/make/unit-tests/varparse-errors.exp
diff -u src/usr.bin/make/unit-tests/varparse-errors.exp:1.2 src/usr.bin/make/unit-tests/varparse-errors.exp:1.3
--- src/usr.bin/make/unit-tests/varparse-errors.exp:1.2	Tue Dec  1 20:15:23 2020
+++ src/usr.bin/make/unit-tests/varparse-errors.exp	Sun Dec 20 19:47:34 2020
@@ -1,3 +1,5 @@
-make: Unknown modifier 'Z'
-make: Unknown modifier 'Z'
-exit status 0
+make: "varparse-errors.mk" line 38: Unknown modifier 'Z'
+make: "varparse-errors.mk" line 46: Unknown modifier 'Z'
+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.2 src/usr.bin/make/unit-tests/varparse-errors.mk:1.3
--- src/usr.bin/make/unit-tests/varparse-errors.mk:1.2	Tue Dec  1 20:15:23 2020
+++ src/usr.bin/make/unit-tests/varparse-errors.mk	Sun Dec 20 19:47:34 2020
@@ -1,4 +1,4 @@
-# $NetBSD: varparse-errors.mk,v 1.2 2020/12/01 20:15:23 rillig Exp $
+# $NetBSD: varparse-errors.mk,v 1.3 2020/12/20 19:47:34 rillig Exp $
 
 # Tests for parsing and evaluating all kinds of variable expressions.
 #
@@ -33,12 +33,16 @@ ERR_EVAL=	An evaluation error ${:Uvalue:
 .endif
 
 # As of 2020-12-01, errors in the variable name are silently ignored.
+# Since var.c 1.754 from 2020-12-20, unknown modifiers at parse time result
+# in an error message and a non-zero exit status.
 VAR.${:U:Z}=	unknown modifier in the variable name
 .if ${VAR.} != "unknown modifier in the variable name"
 .  error
 .endif
 
 # As of 2020-12-01, errors in the variable name are silently ignored.
+# Since var.c 1.754 from 2020-12-20, unknown modifiers at parse time result
+# in an error message and a non-zero exit status.
 VAR.${:U:Z}post=	unknown modifier with text in the variable name
 .if ${VAR.post} != "unknown modifier with text in the variable name"
 .  error

Index: src/usr.bin/make/unit-tests/varmod-range.exp
diff -u src/usr.bin/make/unit-tests/varmod-range.exp:1.5 src/usr.bin/make/unit-tests/varmod-range.exp:1.6
--- src/usr.bin/make/unit-tests/varmod-range.exp:1.5	Sun Nov  1 14:36:25 2020
+++ src/usr.bin/make/unit-tests/varmod-range.exp	Sun Dec 20 19:47:34 2020
@@ -1,13 +1,13 @@
 make: "varmod-range.mk" line 53: Invalid number: x}Rest" != "Rest"
 
 make: "varmod-range.mk" line 53: Malformed conditional ("${:U:range=x}Rest" != "Rest")
-make: Unknown modifier 'x'
+make: "varmod-range.mk" line 62: Unknown modifier 'x'
 make: "varmod-range.mk" line 62: Malformed conditional ("${:U:range=0x0}Rest" != "Rest")
-make: Unknown modifier 'r'
+make: "varmod-range.mk" line 78: Unknown modifier 'r'
 make: "varmod-range.mk" line 78: Malformed conditional ("${a b c:L:rang}Rest" != "Rest")
-make: Unknown modifier 'r'
+make: "varmod-range.mk" line 85: Unknown modifier 'r'
 make: "varmod-range.mk" line 85: Malformed conditional ("${a b c:L:rango}Rest" != "Rest")
-make: Unknown modifier 'r'
+make: "varmod-range.mk" line 92: Unknown modifier 'r'
 make: "varmod-range.mk" line 92: Malformed conditional ("${a b c:L:ranger}Rest" != "Rest")
 make: Fatal errors encountered -- cannot continue
 make: stopped in unit-tests

Reply via email to