Module Name: src Committed By: rillig Date: Thu Feb 27 06:23:07 UTC 2025
Modified Files: src/tests/usr.bin/xlint/lint1: msg_196.c src/usr.bin/xlint/lint1: err.c tree.c Log Message: lint: add details to message about conversion in 'case' To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/msg_196.c cvs rdiff -u -r1.265 -r1.266 src/usr.bin/xlint/lint1/err.c cvs rdiff -u -r1.673 -r1.674 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/tests/usr.bin/xlint/lint1/msg_196.c diff -u src/tests/usr.bin/xlint/lint1/msg_196.c:1.4 src/tests/usr.bin/xlint/lint1/msg_196.c:1.5 --- src/tests/usr.bin/xlint/lint1/msg_196.c:1.4 Thu Sep 7 06:17:35 2023 +++ src/tests/usr.bin/xlint/lint1/msg_196.c Thu Feb 27 06:23:07 2025 @@ -1,19 +1,22 @@ -/* $NetBSD: msg_196.c,v 1.4 2023/09/07 06:17:35 rillig Exp $ */ +/* $NetBSD: msg_196.c,v 1.5 2025/02/27 06:23:07 rillig Exp $ */ # 3 "msg_196.c" -// Test for message: case label affected by conversion [196] +// Test for message: case label is converted from '%s' to '%s' [196] /* lint1-extra-flags: -X 351 */ +// C23 6.8.5.3p5 says: [...] The constant expression in each case label is +// converted to the promoted type of the controlling expression. [...] + void switch_int_unsigned(int x) { switch (x) { - /* expect+1: warning: case label affected by conversion [196] */ + /* expect+1: warning: case label is converted from 'unsigned int' to 'int' [196] */ case (unsigned int)-1: - /* expect+1: warning: case label affected by conversion [196] */ + /* expect+1: warning: case label is converted from 'unsigned int' to 'int' [196] */ case -2U: - /* expect+1: warning: case label affected by conversion [196] */ + /* expect+1: warning: case label is converted from 'unsigned long long' to 'int' [196] */ case 0x1000200030004000ULL: return; } Index: src/usr.bin/xlint/lint1/err.c diff -u src/usr.bin/xlint/lint1/err.c:1.265 src/usr.bin/xlint/lint1/err.c:1.266 --- src/usr.bin/xlint/lint1/err.c:1.265 Mon Feb 24 19:56:27 2025 +++ src/usr.bin/xlint/lint1/err.c Thu Feb 27 06:23:07 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: err.c,v 1.265 2025/02/24 19:56:27 rillig Exp $ */ +/* $NetBSD: err.c,v 1.266 2025/02/27 06:23:07 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.265 2025/02/24 19:56:27 rillig Exp $"); +__RCSID("$NetBSD: err.c,v 1.266 2025/02/27 06:23:07 rillig Exp $"); #endif #include <limits.h> @@ -251,7 +251,7 @@ static const char *const msgs[] = { "'%s' statement not reached", // 193 "label '%s' redefined", // 194 "case not in switch", // 195 - "case label affected by conversion", // 196 + "case label is converted from '%s' to '%s'", // 196 "non-constant case expression", // 197 "non-integral case expression", // 198 "duplicate case '%jd' in switch", // 199 Index: src/usr.bin/xlint/lint1/tree.c diff -u src/usr.bin/xlint/lint1/tree.c:1.673 src/usr.bin/xlint/lint1/tree.c:1.674 --- src/usr.bin/xlint/lint1/tree.c:1.673 Mon Feb 24 19:56:27 2025 +++ src/usr.bin/xlint/lint1/tree.c Thu Feb 27 06:23:07 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: tree.c,v 1.673 2025/02/24 19:56:27 rillig Exp $ */ +/* $NetBSD: tree.c,v 1.674 2025/02/27 06:23:07 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.673 2025/02/24 19:56:27 rillig Exp $"); +__RCSID("$NetBSD: tree.c,v 1.674 2025/02/27 06:23:07 rillig Exp $"); #endif #include <float.h> @@ -4126,8 +4126,8 @@ warn_constant_check_range_truncated(op_t /* initializer does not fit */ warning(178); else if (op == CASE) - /* case label affected by conversion */ - warning(196); + /* case label is converted from '%s' to '%s' */ + warning(196, tspec_name(ot), type_name(tp)); else if (op == FARG) /* conversion of '%s' to '%s' is out of range, arg #%d */ warning(295, type_name(gettyp(ot)), type_name(tp), arg); @@ -4147,8 +4147,8 @@ warn_constant_check_range_loss(op_t op, /* bit-field initializer out of range */ warning(11); else if (op == CASE) - /* case label affected by conversion */ - warning(196); + /* case label is converted from '%s' to '%s' */ + warning(196, tspec_name(ot), type_name(tp)); else if (op == FARG) /* conversion of '%s' to '%s' is out of range, arg #%d */ warning(295, type_name(gettyp(ot)), type_name(tp), arg);