Module Name:    src
Committed By:   rillig
Date:           Sat Nov 23 16:48:35 UTC 2024

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/tests/usr.bin/xlint/lint1: msg_153.c t_usage.sh
        src/usr.bin/xlint/lint1: err.c tree.c
Added Files:
        src/tests/usr.bin/xlint/lint1: msg_383.c

Log Message:
lint: use separate message when discarding a qualifier in call


To generate a diff of this commit:
cvs rdiff -u -r1.1346 -r1.1347 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.8 -r1.9 src/tests/usr.bin/xlint/lint1/msg_153.c
cvs rdiff -u -r0 -r1.1 src/tests/usr.bin/xlint/lint1/msg_383.c
cvs rdiff -u -r1.23 -r1.24 src/tests/usr.bin/xlint/lint1/t_usage.sh
cvs rdiff -u -r1.254 -r1.255 src/usr.bin/xlint/lint1/err.c
cvs rdiff -u -r1.659 -r1.660 src/usr.bin/xlint/lint1/tree.c

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

Modified files:

Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.1346 src/distrib/sets/lists/tests/mi:1.1347
--- src/distrib/sets/lists/tests/mi:1.1346	Sun Nov 10 15:57:32 2024
+++ src/distrib/sets/lists/tests/mi	Sat Nov 23 16:48:35 2024
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1346 2024/11/10 15:57:32 riastradh Exp $
+# $NetBSD: mi,v 1.1347 2024/11/23 16:48:35 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -7589,6 +7589,7 @@
 ./usr/tests/usr.bin/xlint/lint1/msg_380.c			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_381.c			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_382.c			tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/msg_383.c			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/op_colon.c			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/op_colon.exp			tests-obsolete		obsolete,atf
 ./usr/tests/usr.bin/xlint/lint1/op_shl_lp64.c			tests-usr.bin-tests	compattestfile,atf

Index: src/tests/usr.bin/xlint/lint1/msg_153.c
diff -u src/tests/usr.bin/xlint/lint1/msg_153.c:1.8 src/tests/usr.bin/xlint/lint1/msg_153.c:1.9
--- src/tests/usr.bin/xlint/lint1/msg_153.c:1.8	Sat Nov 23 00:01:48 2024
+++ src/tests/usr.bin/xlint/lint1/msg_153.c	Sat Nov 23 16:48:35 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg_153.c,v 1.8 2024/11/23 00:01:48 rillig Exp $	*/
+/*	$NetBSD: msg_153.c,v 1.9 2024/11/23 16:48:35 rillig Exp $	*/
 # 3 "msg_153.c"
 
 // Test for message: converting '%s' to incompatible '%s' for argument %d [153]
@@ -31,8 +31,8 @@ qualifiers(char *ptr, const volatile cha
 {
 	sink_qualifiers(ptr, ptr, ptr, ptr);
 
-	/* expect+3: warning: converting 'pointer to const volatile char' to incompatible 'pointer to char' for argument 1 [153] */
-	/* expect+2: warning: converting 'pointer to const volatile char' to incompatible 'pointer to const char' for argument 2 [153] */
-	/* expect+1: warning: converting 'pointer to const volatile char' to incompatible 'pointer to volatile char' for argument 3 [153] */
+	/* expect+3: warning: passing 'pointer to const volatile char' to argument 1 discards 'const volatile' [383] */
+	/* expect+2: warning: passing 'pointer to const volatile char' to argument 2 discards 'volatile' [383] */
+	/* expect+1: warning: passing 'pointer to const volatile char' to argument 3 discards 'const' [383] */
 	sink_qualifiers(cvptr, cvptr, cvptr, cvptr);
 }

Index: src/tests/usr.bin/xlint/lint1/t_usage.sh
diff -u src/tests/usr.bin/xlint/lint1/t_usage.sh:1.23 src/tests/usr.bin/xlint/lint1/t_usage.sh:1.24
--- src/tests/usr.bin/xlint/lint1/t_usage.sh:1.23	Wed Jul 10 20:33:38 2024
+++ src/tests/usr.bin/xlint/lint1/t_usage.sh	Sat Nov 23 16:48:35 2024
@@ -1,4 +1,4 @@
-# $NetBSD: t_usage.sh,v 1.23 2024/07/10 20:33:38 rillig Exp $
+# $NetBSD: t_usage.sh,v 1.24 2024/11/23 16:48:35 rillig Exp $
 #
 # Copyright (c) 2023 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -39,13 +39,13 @@ suppress_messages_body()
 
 	# The largest known message.
 	atf_check \
-	    "$lint1" -X 382 code.c /dev/null
+	    "$lint1" -X 383 code.c /dev/null
 
 	# Larger than the largest known message.
 	atf_check \
 	    -s 'exit:1' \
-	    -e "inline:lint1: invalid message ID '383'\n" \
-	    "$lint1" -X 383 code.c /dev/null
+	    -e "inline:lint1: invalid message ID '384'\n" \
+	    "$lint1" -X 384 code.c /dev/null
 
 	# Whitespace is not allowed before a message ID.
 	atf_check \

Index: src/usr.bin/xlint/lint1/err.c
diff -u src/usr.bin/xlint/lint1/err.c:1.254 src/usr.bin/xlint/lint1/err.c:1.255
--- src/usr.bin/xlint/lint1/err.c:1.254	Sat Nov 23 00:01:48 2024
+++ src/usr.bin/xlint/lint1/err.c	Sat Nov 23 16:48:35 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: err.c,v 1.254 2024/11/23 00:01:48 rillig Exp $	*/
+/*	$NetBSD: err.c,v 1.255 2024/11/23 16:48:35 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: err.c,v 1.254 2024/11/23 00:01:48 rillig Exp $");
+__RCSID("$NetBSD: err.c,v 1.255 2024/11/23 16:48:35 rillig Exp $");
 #endif
 
 #include <limits.h>
@@ -438,6 +438,7 @@ static const char *const msgs[] = {
 	"lossy conversion of %Lg to '%s', arg #%d",			// 380
 	"lossy conversion of %Lg to '%s'",				// 381
 	"constant assignment of type '%s' in operand of '!' always evaluates to '%s'", 	// 382
+	"passing '%s' to argument %d discards '%s'",			// 383
 };
 
 static bool is_suppressed[sizeof(msgs) / sizeof(msgs[0])];

Index: src/usr.bin/xlint/lint1/tree.c
diff -u src/usr.bin/xlint/lint1/tree.c:1.659 src/usr.bin/xlint/lint1/tree.c:1.660
--- src/usr.bin/xlint/lint1/tree.c:1.659	Sat Nov 23 00:01:48 2024
+++ src/usr.bin/xlint/lint1/tree.c	Sat Nov 23 16:48:35 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: tree.c,v 1.659 2024/11/23 00:01:48 rillig Exp $	*/
+/*	$NetBSD: tree.c,v 1.660 2024/11/23 16:48:35 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: tree.c,v 1.659 2024/11/23 00:01:48 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.660 2024/11/23 16:48:35 rillig Exp $");
 #endif
 
 #include <float.h>
@@ -2845,7 +2845,7 @@ check_unconst_function(const type_t *lst
 
 static bool
 check_assign_void_pointer_compat(op_t op, int arg,
-				 const type_t *ltp, tspec_t lt,
+				 tspec_t lt,
 				 const type_t *lstp, tspec_t lst,
 				 const tnode_t *rn,
 				 const type_t *rtp, tspec_t rt,
@@ -2870,9 +2870,8 @@ check_assign_void_pointer_compat(op_t op
 			    qualifiers + 1, type_name(rtp));
 			break;
 		case FARG:
-			/* converting '%s' to incompatible '%s' ... */
-			warning(153,
-			    type_name(rtp), type_name(ltp), arg);
+			/* passing '%s' to argument %d discards '%s' */
+			warning(383, type_name(rtp), arg, qualifiers + 1);
 			break;
 		default:
 			/* operator '%s' discards '%s' from '%s' */
@@ -2996,7 +2995,7 @@ check_assign_types_compatible(op_t op, i
 	check_assign_void_pointer(op, arg, lt, lst, rt, rst);
 
 	if (check_assign_void_pointer_compat(op, arg,
-	    ltp, lt, lstp, lst, rn, rtp, rt, rstp, rst))
+	    lt, lstp, lst, rn, rtp, rt, rstp, rst))
 		return true;
 
 	if (check_assign_pointer_integer(op, arg, ltp, lt, rtp, rt))

Added files:

Index: src/tests/usr.bin/xlint/lint1/msg_383.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/msg_383.c:1.1
--- /dev/null	Sat Nov 23 16:48:35 2024
+++ src/tests/usr.bin/xlint/lint1/msg_383.c	Sat Nov 23 16:48:35 2024
@@ -0,0 +1,27 @@
+/*	$NetBSD: msg_383.c,v 1.1 2024/11/23 16:48:35 rillig Exp $	*/
+# 3 "msg_383.c"
+
+// Test for message: passing '%s' to argument %d discards '%s' [383]
+
+/* lint1-extra-flags: -X 351 */
+
+void sink_char(char *, const char *, volatile char *, const volatile char *);
+void sink_int(int *, const int *, volatile int *, const volatile int *);
+
+void
+caller(const volatile char *cvcp, const volatile int *cvip, int (*fn)(void))
+{
+	/* expect+3: warning: passing 'pointer to const volatile char' to argument 1 discards 'const volatile' [383] */
+	/* expect+2: warning: passing 'pointer to const volatile char' to argument 2 discards 'volatile' [383] */
+	/* expect+1: warning: passing 'pointer to const volatile char' to argument 3 discards 'const' [383] */
+	sink_char(cvcp, cvcp, cvcp, cvcp);
+	/* expect+3: warning: passing 'pointer to const volatile int' to argument 1 discards 'const volatile' [383] */
+	/* expect+2: warning: passing 'pointer to const volatile int' to argument 2 discards 'volatile' [383] */
+	/* expect+1: warning: passing 'pointer to const volatile int' to argument 3 discards 'const' [383] */
+	sink_int(cvip, cvip, cvip, cvip);
+	/* expect+4: warning: converting 'pointer to function(void) returning int' to incompatible 'pointer to char' for argument 1 [153] */
+	/* expect+3: warning: converting 'pointer to function(void) returning int' to incompatible 'pointer to const char' for argument 2 [153] */
+	/* expect+2: warning: converting 'pointer to function(void) returning int' to incompatible 'pointer to volatile char' for argument 3 [153] */
+	/* expect+1: warning: converting 'pointer to function(void) returning int' to incompatible 'pointer to const volatile char' for argument 4 [153] */
+	sink_char(fn, fn, fn, fn);
+}

Reply via email to