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
 

Reply via email to