Module Name:    src
Committed By:   rillig
Date:           Sun Apr 18 07:31:47 UTC 2021

Modified Files:
        src/tests/usr.bin/xlint/lint1: msg_260.c msg_260.exp
        src/usr.bin/xlint/lint1: lint1.h

Log Message:
lint: document wrong location information in diagnostics


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/tests/usr.bin/xlint/lint1/msg_260.c \
    src/tests/usr.bin/xlint/lint1/msg_260.exp
cvs rdiff -u -r1.95 -r1.96 src/usr.bin/xlint/lint1/lint1.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/usr.bin/xlint/lint1/msg_260.c
diff -u src/tests/usr.bin/xlint/lint1/msg_260.c:1.2 src/tests/usr.bin/xlint/lint1/msg_260.c:1.3
--- src/tests/usr.bin/xlint/lint1/msg_260.c:1.2	Sun Feb 21 09:07:58 2021
+++ src/tests/usr.bin/xlint/lint1/msg_260.c	Sun Apr 18 07:31:47 2021
@@ -1,7 +1,29 @@
-/*	$NetBSD: msg_260.c,v 1.2 2021/02/21 09:07:58 rillig Exp $	*/
+/*	$NetBSD: msg_260.c,v 1.3 2021/04/18 07:31:47 rillig Exp $	*/
 # 3 "msg_260.c"
 
 // Test for message: previous declaration of %s [260]
 
-TODO: "Add example code that triggers the above message." /* expect: 249 */
-TODO: "Add example code that almost triggers the above message."
+/* lint1-extra-flags: -r */
+
+# 100 "header.h" 1
+struct s {		/* expect: 260 */
+    int member;
+};
+# 13 "msg_260.c" 2
+
+# 200 "header.h" 1
+union s {		/* expect: tag redeclared *//* expect: 260 */
+    int member;
+};
+/*
+ * FIXME: the stack trace for the 260 is wrong, as the 260 is included from
+ * line 8, not from line 14.
+ */
+# 19 "msg_160.c" 2
+
+union s {		/* expect: tag redeclared */
+    int member;
+};
+/*
+ * FIXME: the stack trace for the 260 is missing.
+ */
Index: src/tests/usr.bin/xlint/lint1/msg_260.exp
diff -u src/tests/usr.bin/xlint/lint1/msg_260.exp:1.2 src/tests/usr.bin/xlint/lint1/msg_260.exp:1.3
--- src/tests/usr.bin/xlint/lint1/msg_260.exp:1.2	Sun Mar 21 20:45:00 2021
+++ src/tests/usr.bin/xlint/lint1/msg_260.exp	Sun Apr 18 07:31:47 2021
@@ -1 +1,6 @@
-msg_260.c(6): error: syntax error ':' [249]
+header.h(200): error: (struct) tag redeclared [46]
+	included from msg_260.c(14)
+header.h(100): previous declaration of s [260]
+	included from msg_260.c(14)
+msg_160.c(20): error: (union) tag redeclared [46]
+header.h(200): previous declaration of s [260]

Index: src/usr.bin/xlint/lint1/lint1.h
diff -u src/usr.bin/xlint/lint1/lint1.h:1.95 src/usr.bin/xlint/lint1/lint1.h:1.96
--- src/usr.bin/xlint/lint1/lint1.h:1.95	Wed Apr 14 18:35:40 2021
+++ src/usr.bin/xlint/lint1/lint1.h	Sun Apr 18 07:31:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: lint1.h,v 1.95 2021/04/14 18:35:40 rillig Exp $ */
+/* $NetBSD: lint1.h,v 1.96 2021/04/18 07:31:47 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -57,6 +57,11 @@
 
 /*
  * Describes the position of a declaration or anything else.
+ *
+ * FIXME: Just a single file:lineno pair is not enough to accurately describe
+ *  the position of a symbol.  The whole inclusion path at that point must be
+ *  stored as well.  This makes a difference for symbols from included
+ *  headers, see print_stack_trace.
  */
 typedef struct {
 	const	char *p_file;

Reply via email to