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(1): issue a parse error on unclosed variables
details: https://anonhg.NetBSD.org/src/rev/0b6172be6485
branches: trunk
changeset: 1012382:0b6172be6485
user: rillig <rillig%NetBSD.org@localhost>
date: Tue Jul 28 17:18:40 2020 +0000
description:
make(1): issue a parse error on unclosed variables
These errors had not been detected before by make.
In pkgsrc, this task as been done by pkglint since 2019-04-07.
diffstat:
usr.bin/make/unit-tests/varmisc.exp | 15 +++++++++++++++
usr.bin/make/unit-tests/varmisc.mk | 13 ++++++++++---
usr.bin/make/var.c | 8 +++++---
3 files changed, 30 insertions(+), 6 deletions(-)
diffs (93 lines):
diff -r 4d0acb4f7d67 -r 0b6172be6485 usr.bin/make/unit-tests/varmisc.exp
--- a/usr.bin/make/unit-tests/varmisc.exp Tue Jul 28 16:45:56 2020 +0000
+++ b/usr.bin/make/unit-tests/varmisc.exp Tue Jul 28 17:18:40 2020 +0000
@@ -47,9 +47,24 @@
parse-dynamic: parse-dynamic parse-dynamic after
parse-dynamic: parse-dynamic parse-dynamic after
varerror-unclosed:begin
+make: Unclosed variable ""
+make: Unclosed variable "UNCLOSED"
+
+make: Unclosed variable "UNCLOSED"
+
+make: Unclosed variable "PATTERN"
make: Unclosed variable specification (expecting '}') for "UNCLOSED" (value "") modifier M
+make: Unclosed variable "param"
+make: Unclosed variable "UNCLOSED."
+
+
+make: Unclosed variable "UNCLOSED.1"
+
+make: Unclosed variable "UNCLOSED.2"
+
+make: Unclosed variable "UNCLOSED.3"
varerror-unclosed:end
exit status 0
diff -r 4d0acb4f7d67 -r 0b6172be6485 usr.bin/make/unit-tests/varmisc.mk
--- a/usr.bin/make/unit-tests/varmisc.mk Tue Jul 28 16:45:56 2020 +0000
+++ b/usr.bin/make/unit-tests/varmisc.mk Tue Jul 28 17:18:40 2020 +0000
@@ -1,4 +1,4 @@
-# $Id: varmisc.mk,v 1.17 2020/07/26 21:46:10 rillig Exp $
+# $Id: varmisc.mk,v 1.18 2020/07/28 17:18:40 rillig Exp $
#
# Miscellaneous variable tests.
@@ -191,11 +191,18 @@
@echo $@: ${GB_TARGET} ${GB_MEMBER} ${GB_PREFIX} ${GB_ARCHIVE} ${GB_ALLSRC}
@echo $@: ${GL_TARGET} ${GL_MEMBER} ${GL_PREFIX} ${GL_ARCHIVE} ${GL_ALLSRC}
-# As of 2020-07-26, make does not complain about unclosed variables.
-# It does complain about unclosed variables when parsing modifiers though.
+# Since 2020-07-28, make complains about unclosed variables.
+# Before that, it had not complained about unclosed variables only when
+# parsing the modifiers, but not when parsing the variable name.
varerror-unclosed:
@echo $@:begin
+ @echo $(
+ @echo $(UNCLOSED
@echo ${UNCLOSED
@echo ${UNCLOSED:M${PATTERN
@echo ${UNCLOSED.${param
+ @echo $
+.for i in 1 2 3
+ @echo ${UNCLOSED.${i}
+.endfor
@echo $@:end
diff -r 4d0acb4f7d67 -r 0b6172be6485 usr.bin/make/var.c
--- a/usr.bin/make/var.c Tue Jul 28 16:45:56 2020 +0000
+++ b/usr.bin/make/var.c Tue Jul 28 17:18:40 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: var.c,v 1.352 2020/07/28 16:42:22 rillig Exp $ */
+/* $NetBSD: var.c,v 1.353 2020/07/28 17:18:40 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: var.c,v 1.352 2020/07/28 16:42:22 rillig Exp $";
+static char rcsid[] = "$NetBSD: var.c,v 1.353 2020/07/28 17:18:40 rillig Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94";
#else
-__RCSID("$NetBSD: var.c,v 1.352 2020/07/28 16:42:22 rillig Exp $");
+__RCSID("$NetBSD: var.c,v 1.353 2020/07/28 17:18:40 rillig Exp $");
#endif
#endif /* not lint */
#endif
@@ -3506,6 +3506,8 @@
} else if (*tstr == endc) {
haveModifier = FALSE;
} else {
+ Parse_Error(PARSE_FATAL, "Unclosed variable \"%s\"",
+ Buf_GetAll(&namebuf, NULL));
/*
* If we never did find the end character, return NULL
* right now, setting the length to be the distance to
Home |
Main Index |
Thread Index |
Old Index