Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make make: replace parse error "Need an operator" wi...



details:   https://anonhg.NetBSD.org/src/rev/c94851375106
branches:  trunk
changeset: 1018402:c94851375106
user:      rillig <rillig%NetBSD.org@localhost>
date:      Mon Feb 01 21:56:03 2021 +0000

description:
make: replace parse error "Need an operator" with better message

The previous error message is not easily understandable since it is
missing a crucial detail, the column where the operator is needed.
Without this information, the author of the makefile gets no useful
hint.  Furthermore, there are several types of operators in makefiles:

        the dependency operators ':', '!', '::',
        the variable assignment operators '=', '!=', '+=', '?=', ':=',
        the conditional operators '&&', '||', '!',
        the comparison operators '==', '!=', '>', '>=', '<', '<='.

This leaves too much ambiguity.

Replace this error message with "Invalid line type", which is more
generic, more accurate and thus less misleading.

diffstat:

 usr.bin/make/parse.c                      |  6 +++---
 usr.bin/make/unit-tests/var-op-assign.exp |  2 +-
 usr.bin/make/unit-tests/varname.exp       |  2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diffs (49 lines):

diff -r e2ced1523de7 -r c94851375106 usr.bin/make/parse.c
--- a/usr.bin/make/parse.c      Mon Feb 01 21:38:20 2021 +0000
+++ b/usr.bin/make/parse.c      Mon Feb 01 21:56:03 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: parse.c,v 1.534 2021/01/30 20:53:29 rillig Exp $       */
+/*     $NetBSD: parse.c,v 1.535 2021/02/01 21:56:03 rillig Exp $       */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -109,7 +109,7 @@
 #include "pathnames.h"
 
 /*     "@(#)parse.c    8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: parse.c,v 1.534 2021/01/30 20:53:29 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.535 2021/02/01 21:56:03 rillig Exp $");
 
 /* types and constants */
 
@@ -1018,7 +1018,7 @@
                Parse_Error(PARSE_FATAL, "Unknown directive \"%.*s\"",
                    (int)(dirend - dirstart), dirstart);
        } else
-               Parse_Error(PARSE_FATAL, "Need an operator");
+               Parse_Error(PARSE_FATAL, "Invalid line type");
 }
 
 static void
diff -r e2ced1523de7 -r c94851375106 usr.bin/make/unit-tests/var-op-assign.exp
--- a/usr.bin/make/unit-tests/var-op-assign.exp Mon Feb 01 21:38:20 2021 +0000
+++ b/usr.bin/make/unit-tests/var-op-assign.exp Mon Feb 01 21:56:03 2021 +0000
@@ -1,5 +1,5 @@
 this will be evaluated later
-make: "var-op-assign.mk" line 59: Need an operator
+make: "var-op-assign.mk" line 59: Invalid line type
 make: "var-op-assign.mk" line 93: Parsing still continues until here.
 make: Fatal errors encountered -- cannot continue
 make: stopped in unit-tests
diff -r e2ced1523de7 -r c94851375106 usr.bin/make/unit-tests/varname.exp
--- a/usr.bin/make/unit-tests/varname.exp       Mon Feb 01 21:38:20 2021 +0000
+++ b/usr.bin/make/unit-tests/varname.exp       Mon Feb 01 21:56:03 2021 +0000
@@ -14,7 +14,7 @@
 Applying ${:U...} to "" (VARE_UNDEFERR|VARE_WANTRES, none, VEF_UNDEF)
 Result of ${:UVAR\(\(\(} is "VAR\(\(\(" (VARE_UNDEFERR|VARE_WANTRES, none, VEF_UNDEF|VEF_DEF)
 Global:.ALLTARGETS =  VAR(((=) VAR\(\(\(=
-make: "varname.mk" line 35: Need an operator
+make: "varname.mk" line 35: Invalid line type
 Var_Parse: ${VARNAME} with VARE_WANTRES
 Global:VAR((( = try3
 Global:.MAKEFLAGS =  -r -k -d v -d



Home | Main Index | Thread Index | Old Index