Module Name: src
Committed By: rillig
Date: Sat Dec 19 12:24:46 UTC 2020
Modified Files:
src/usr.bin/make: parse.c
src/usr.bin/make/unit-tests: directive-for-lines.exp
directive-for-lines.mk
Log Message:
make(1): fix line numbers in .for loops (since 2007-01-01)
To generate a diff of this commit:
cvs rdiff -u -r1.493 -r1.494 src/usr.bin/make/parse.c
cvs rdiff -u -r1.1 -r1.2 src/usr.bin/make/unit-tests/directive-for-lines.exp \
src/usr.bin/make/unit-tests/directive-for-lines.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/parse.c
diff -u src/usr.bin/make/parse.c:1.493 src/usr.bin/make/parse.c:1.494
--- src/usr.bin/make/parse.c:1.493 Sat Dec 19 10:57:17 2020
+++ src/usr.bin/make/parse.c Sat Dec 19 12:24:46 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: parse.c,v 1.493 2020/12/19 10:57:17 rillig Exp $ */
+/* $NetBSD: parse.c,v 1.494 2020/12/19 12:24:46 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -117,7 +117,7 @@
#include "pathnames.h"
/* "@(#)parse.c 8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: parse.c,v 1.493 2020/12/19 10:57:17 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.494 2020/12/19 12:24:46 rillig Exp $");
/* types and constants */
@@ -2814,8 +2814,8 @@ ParseGetLine(GetLineMode mode)
if (line_end == line || firstComment == line) {
if (res == PRLR_EOF)
return NULL;
- /* Parse another line */
- continue;
+ if (mode != PARSE_RAW)
+ continue;
}
/* We now have a line of data */
Index: src/usr.bin/make/unit-tests/directive-for-lines.exp
diff -u src/usr.bin/make/unit-tests/directive-for-lines.exp:1.1 src/usr.bin/make/unit-tests/directive-for-lines.exp:1.2
--- src/usr.bin/make/unit-tests/directive-for-lines.exp:1.1 Sat Dec 19 12:14:59 2020
+++ src/usr.bin/make/unit-tests/directive-for-lines.exp Sat Dec 19 12:24:46 2020
@@ -1,9 +1,9 @@
-make: "directive-for-lines.mk" line 12: expect 18
-make: "directive-for-lines.mk" line 12: expect 18
-make: "directive-for-lines.mk" line 14: expect 24
-make: "directive-for-lines.mk" line 12: expect 18
-make: "directive-for-lines.mk" line 12: expect 18
-make: "directive-for-lines.mk" line 14: expect 24
+make: "directive-for-lines.mk" line 18: expect 18
+make: "directive-for-lines.mk" line 18: expect 18
+make: "directive-for-lines.mk" line 24: expect 24
+make: "directive-for-lines.mk" line 18: expect 18
+make: "directive-for-lines.mk" line 18: expect 18
+make: "directive-for-lines.mk" line 24: expect 24
make: no target to make.
make: stopped in unit-tests
Index: src/usr.bin/make/unit-tests/directive-for-lines.mk
diff -u src/usr.bin/make/unit-tests/directive-for-lines.mk:1.1 src/usr.bin/make/unit-tests/directive-for-lines.mk:1.2
--- src/usr.bin/make/unit-tests/directive-for-lines.mk:1.1 Sat Dec 19 12:14:59 2020
+++ src/usr.bin/make/unit-tests/directive-for-lines.mk Sat Dec 19 12:24:46 2020
@@ -1,11 +1,11 @@
-# $NetBSD: directive-for-lines.mk,v 1.1 2020/12/19 12:14:59 rillig Exp $
+# $NetBSD: directive-for-lines.mk,v 1.2 2020/12/19 12:24:46 rillig Exp $
#
# Tests for the line numbers that are reported in .for loops.
#
-# Since 2007-01-01 21:47:32 (git 4d3c468f96e1080e4d3cca8cc39067a73af14fbb),
-# parse.c 1.127, the line numbers for the .info directives and error messages
-# inside .for loops have been wrong since ParseGetLine skips empty lines, even
-# when collecting the lines for the .for loop body.
+# Between 2007-01-01 (git 4d3c468f96e1080e, parse.c 1.127) and 2020-12-19
+# (parse.c 1.494), the line numbers for the .info directives and error
+# messages inside .for loops had been wrong since ParseGetLine skipped empty
+# lines, even when collecting the lines for the .for loop body.
.for outer in a b