Module Name: src Committed By: rillig Date: Mon Dec 14 22:17:11 UTC 2020
Modified Files: src/usr.bin/make: cond.c src/usr.bin/make/unit-tests: directive-else.exp directive-else.mk Log Message: make(1): error out on .else with extraneous text To generate a diff of this commit: cvs rdiff -u -r1.225 -r1.226 src/usr.bin/make/cond.c cvs rdiff -u -r1.3 -r1.4 src/usr.bin/make/unit-tests/directive-else.exp cvs rdiff -u -r1.6 -r1.7 src/usr.bin/make/unit-tests/directive-else.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/cond.c diff -u src/usr.bin/make/cond.c:1.225 src/usr.bin/make/cond.c:1.226 --- src/usr.bin/make/cond.c:1.225 Mon Dec 14 21:56:17 2020 +++ src/usr.bin/make/cond.c Mon Dec 14 22:17:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: cond.c,v 1.225 2020/12/14 21:56:17 rillig Exp $ */ +/* $NetBSD: cond.c,v 1.226 2020/12/14 22:17:11 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -94,7 +94,7 @@ #include "dir.h" /* "@(#)cond.c 8.2 (Berkeley) 1/2/94" */ -MAKE_RCSID("$NetBSD: cond.c,v 1.225 2020/12/14 21:56:17 rillig Exp $"); +MAKE_RCSID("$NetBSD: cond.c,v 1.226 2020/12/14 22:17:11 rillig Exp $"); /* * The parsing of conditional expressions is based on this grammar: @@ -1193,7 +1193,7 @@ Cond_EvalLine(const char *line) p += 2; if (is_token(p, "se", 2)) { /* It is an 'else'. */ - if (opts.lint && p[2] != '\0') + if (p[2] != '\0') Parse_Error(PARSE_FATAL, "The .else directive " "does not take arguments."); Index: src/usr.bin/make/unit-tests/directive-else.exp diff -u src/usr.bin/make/unit-tests/directive-else.exp:1.3 src/usr.bin/make/unit-tests/directive-else.exp:1.4 --- src/usr.bin/make/unit-tests/directive-else.exp:1.3 Fri Nov 13 09:01:59 2020 +++ src/usr.bin/make/unit-tests/directive-else.exp Mon Dec 14 22:17:11 2020 @@ -1,11 +1,11 @@ -make: "directive-else.mk" line 11: The .else directive does not take arguments. -make: "directive-else.mk" line 12: ok -make: "directive-else.mk" line 16: ok -make: "directive-else.mk" line 17: The .else directive does not take arguments. -make: "directive-else.mk" line 22: if-less else -make: "directive-else.mk" line 28: ok -make: "directive-else.mk" line 29: warning: extra else -make: "directive-else.mk" line 42: The .else directive does not take arguments. +make: "directive-else.mk" line 14: The .else directive does not take arguments. +make: "directive-else.mk" line 15: ok +make: "directive-else.mk" line 19: ok +make: "directive-else.mk" line 21: The .else directive does not take arguments. +make: "directive-else.mk" line 26: if-less else +make: "directive-else.mk" line 32: ok +make: "directive-else.mk" line 33: warning: extra else +make: "directive-else.mk" line 45: The .else directive does not take arguments. make: Fatal errors encountered -- cannot continue make: stopped in unit-tests exit status 1 Index: src/usr.bin/make/unit-tests/directive-else.mk diff -u src/usr.bin/make/unit-tests/directive-else.mk:1.6 src/usr.bin/make/unit-tests/directive-else.mk:1.7 --- src/usr.bin/make/unit-tests/directive-else.mk:1.6 Fri Nov 13 09:01:59 2020 +++ src/usr.bin/make/unit-tests/directive-else.mk Mon Dec 14 22:17:11 2020 @@ -1,19 +1,23 @@ -# $NetBSD: directive-else.mk,v 1.6 2020/11/13 09:01:59 rillig Exp $ +# $NetBSD: directive-else.mk,v 1.7 2020/12/14 22:17:11 rillig Exp $ # # Tests for the .else directive. +# +# Since 2020-11-13, an '.else' followed by extraneous text generates a parse +# error in -dL (lint) mode. +# +# Since 2020-12-15, an '.else' followed by extraneous text always generates +# a parse error. -.MAKEFLAGS: -dL # To enable the check for ".else <cond>" - -# The .else directive does not take any arguments. -# As of 2020-08-29, make doesn't warn about this. .if 0 . warning must not be reached +# The .else directive does not take any arguments. .else 123 . info ok .endif .if 1 . info ok +# The .else directive does not take any arguments. .else 123 . warning must not be reached .endif @@ -37,7 +41,6 @@ .endif # A variable expression does count as an argument, even if it is empty. -# XXX: This should be a parse error. .if 0 .else ${:U} .endif