Module Name: src
Committed By: rillig
Date: Wed Jan 27 00:02:38 UTC 2021
Modified Files:
src/usr.bin/make: parse.c
src/usr.bin/make/unit-tests: directive-error.exp directive-error.mk
opt-warnings-as-errors.exp opt-warnings-as-errors.mk
Log Message:
make(1): fix irrelevant message in -W mode
To generate a diff of this commit:
cvs rdiff -u -r1.532 -r1.533 src/usr.bin/make/parse.c
cvs rdiff -u -r1.2 -r1.3 src/usr.bin/make/unit-tests/directive-error.exp
cvs rdiff -u -r1.4 -r1.5 src/usr.bin/make/unit-tests/directive-error.mk \
src/usr.bin/make/unit-tests/opt-warnings-as-errors.mk
cvs rdiff -u -r1.3 -r1.4 \
src/usr.bin/make/unit-tests/opt-warnings-as-errors.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/parse.c
diff -u src/usr.bin/make/parse.c:1.532 src/usr.bin/make/parse.c:1.533
--- src/usr.bin/make/parse.c:1.532 Tue Jan 26 23:44:56 2021
+++ src/usr.bin/make/parse.c Wed Jan 27 00:02:38 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: parse.c,v 1.532 2021/01/26 23:44:56 rillig Exp $ */
+/* $NetBSD: parse.c,v 1.533 2021/01/27 00:02:38 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.532 2021/01/26 23:44:56 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.533 2021/01/27 00:02:38 rillig Exp $");
/* types and constants */
@@ -611,13 +611,10 @@ ParseVErrorInternal(FILE *f, const char
if (type == PARSE_INFO)
goto print_stack_trace;
- if (type == PARSE_FATAL || opts.parseWarnFatal)
- fatals++;
- if (opts.parseWarnFatal && !fatal_warning_error_printed) {
- /*
- * FIXME: Also gets printed on .error, even though it
- * doesn't apply to it.
- */
+ if (type == PARSE_WARNING && !opts.parseWarnFatal)
+ goto print_stack_trace;
+ fatals++;
+ if (type == PARSE_WARNING && !fatal_warning_error_printed) {
Error("parsing warnings being treated as errors");
fatal_warning_error_printed = TRUE;
}
Index: src/usr.bin/make/unit-tests/directive-error.exp
diff -u src/usr.bin/make/unit-tests/directive-error.exp:1.2 src/usr.bin/make/unit-tests/directive-error.exp:1.3
--- src/usr.bin/make/unit-tests/directive-error.exp:1.2 Tue Jan 26 23:51:20 2021
+++ src/usr.bin/make/unit-tests/directive-error.exp Wed Jan 27 00:02:38 2021
@@ -1,5 +1,4 @@
-make: "directive-error.mk" line 11: message
-make: parsing warnings being treated as errors
+make: "directive-error.mk" line 13: message
make: stopped in unit-tests
exit status 1
Index: src/usr.bin/make/unit-tests/directive-error.mk
diff -u src/usr.bin/make/unit-tests/directive-error.mk:1.4 src/usr.bin/make/unit-tests/directive-error.mk:1.5
--- src/usr.bin/make/unit-tests/directive-error.mk:1.4 Tue Jan 26 23:51:20 2021
+++ src/usr.bin/make/unit-tests/directive-error.mk Wed Jan 27 00:02:38 2021
@@ -1,11 +1,13 @@
-# $NetBSD: directive-error.mk,v 1.4 2021/01/26 23:51:20 rillig Exp $
+# $NetBSD: directive-error.mk,v 1.5 2021/01/27 00:02:38 rillig Exp $
#
# Tests for the .error directive, which prints an error message and exits
# immediately, unlike other "fatal" parse errors, which continue to parse
# until the end of the current top-level makefile.
+#
+# See also:
+# opt-warnings-as-errors.mk
-# TODO: Implementation
-
-# FIXME: The "parsing warnings being treated as errors" is irrelevant.
+# Before parse.c 1.532 from 2021-01-27, the ".error" issued an irrelevant
+# message saying "parsing warnings being treated as errors".
.MAKEFLAGS: -W
.error message
Index: src/usr.bin/make/unit-tests/opt-warnings-as-errors.mk
diff -u src/usr.bin/make/unit-tests/opt-warnings-as-errors.mk:1.4 src/usr.bin/make/unit-tests/opt-warnings-as-errors.mk:1.5
--- src/usr.bin/make/unit-tests/opt-warnings-as-errors.mk:1.4 Mon Nov 9 20:50:56 2020
+++ src/usr.bin/make/unit-tests/opt-warnings-as-errors.mk Wed Jan 27 00:02:38 2021
@@ -1,6 +1,11 @@
-# $NetBSD: opt-warnings-as-errors.mk,v 1.4 2020/11/09 20:50:56 rillig Exp $
+# $NetBSD: opt-warnings-as-errors.mk,v 1.5 2021/01/27 00:02:38 rillig Exp $
#
# Tests for the -W command line option, which turns warnings into errors.
+#
+# Even in -W mode, a .warning is not completely equivalent to an .error.
+# First, the word "warning" is still printed, and second, parsing continues
+# after a failed warning, whereas it would stop immediately at the first
+# .error.
.MAKEFLAGS: -W
Index: src/usr.bin/make/unit-tests/opt-warnings-as-errors.exp
diff -u src/usr.bin/make/unit-tests/opt-warnings-as-errors.exp:1.3 src/usr.bin/make/unit-tests/opt-warnings-as-errors.exp:1.4
--- src/usr.bin/make/unit-tests/opt-warnings-as-errors.exp:1.3 Mon Nov 9 20:50:56 2020
+++ src/usr.bin/make/unit-tests/opt-warnings-as-errors.exp Wed Jan 27 00:02:38 2021
@@ -1,6 +1,6 @@
-make: "opt-warnings-as-errors.mk" line 7: warning: message 1
+make: "opt-warnings-as-errors.mk" line 12: warning: message 1
make: parsing warnings being treated as errors
-make: "opt-warnings-as-errors.mk" line 8: warning: message 2
+make: "opt-warnings-as-errors.mk" line 13: warning: message 2
parsing continues
make: Fatal errors encountered -- cannot continue
make: stopped in unit-tests