summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrillig <rillig@NetBSD.org>2021-02-04 06:54:59 +0000
committerrillig <rillig@NetBSD.org>2021-02-04 06:54:59 +0000
commitbe9c8d46243a90bd18bbff118752dbe4cf3028ba (patch)
tree7594415a5af2d9136783d1f06a3f0838faf0f5c8
parent1153457df70603d24f002884abc03cb7025d47de (diff)
lint: add back "due to prototype" to message 259
That message is only supposed to warn about compatibility to traditional C, in case the function should ever be compiled without its prototype being in effect. All other type checks are supposed to be in another function, as documented, but that type check misses to report a few error-prone type combinations (long to char, long to int). 30 years after the introduction of prototypes with C90, almost all existing code uses prototypes. The warning has thus lost most of its usefulness and can rather be confusing since a conversion from 'char' to 'long' is not problematic with prototypes in action, and the probability of the code being backported to a pre-C90 compiler is diminishingly small. The words "due to prototype" now serve as a hint again. The proper fix could be to suppress this warning in C99 mode since that's far enough from traditional C.
-rw-r--r--tests/usr.bin/xlint/lint1/d_constant_conv2.exp2
-rw-r--r--tests/usr.bin/xlint/lint1/d_gcc_extension.exp4
-rw-r--r--tests/usr.bin/xlint/lint1/d_type_conv1.exp2
-rw-r--r--tests/usr.bin/xlint/lint1/d_type_conv2.exp2
-rw-r--r--tests/usr.bin/xlint/lint1/d_type_conv3.exp2
-rw-r--r--tests/usr.bin/xlint/lint1/msg_259.c6
-rw-r--r--tests/usr.bin/xlint/lint1/msg_259.exp2
-rw-r--r--usr.bin/xlint/lint1/err.c6
-rw-r--r--usr.bin/xlint/lint1/tree.c8
9 files changed, 17 insertions, 17 deletions
diff --git a/tests/usr.bin/xlint/lint1/d_constant_conv2.exp b/tests/usr.bin/xlint/lint1/d_constant_conv2.exp
index 0cc3dfd03c7..05d68f7378d 100644
--- a/tests/usr.bin/xlint/lint1/d_constant_conv2.exp
+++ b/tests/usr.bin/xlint/lint1/d_constant_conv2.exp
@@ -1 +1 @@
-d_constant_conv2.c(11): warning: argument #1 is converted from 'double' to 'unsigned int' [259]
+d_constant_conv2.c(11): warning: argument #1 is converted from 'double' to 'unsigned int' due to prototype [259]
diff --git a/tests/usr.bin/xlint/lint1/d_gcc_extension.exp b/tests/usr.bin/xlint/lint1/d_gcc_extension.exp
index eeb79883c7a..6785c4919ac 100644
--- a/tests/usr.bin/xlint/lint1/d_gcc_extension.exp
+++ b/tests/usr.bin/xlint/lint1/d_gcc_extension.exp
@@ -1,2 +1,2 @@
-d_gcc_extension.c(11): warning: argument #1 is converted from 'double' to 'long double' [259]
-d_gcc_extension.c(11): warning: argument #1 is converted from 'double' to 'long double' [259]
+d_gcc_extension.c(11): warning: argument #1 is converted from 'double' to 'long double' due to prototype [259]
+d_gcc_extension.c(11): warning: argument #1 is converted from 'double' to 'long double' due to prototype [259]
diff --git a/tests/usr.bin/xlint/lint1/d_type_conv1.exp b/tests/usr.bin/xlint/lint1/d_type_conv1.exp
index c6cc10b9454..bf9f908e4f3 100644
--- a/tests/usr.bin/xlint/lint1/d_type_conv1.exp
+++ b/tests/usr.bin/xlint/lint1/d_type_conv1.exp
@@ -1 +1 @@
-d_type_conv1.c(13): warning: argument #1 is converted from 'long long' to 'unsigned int' [259]
+d_type_conv1.c(13): warning: argument #1 is converted from 'long long' to 'unsigned int' due to prototype [259]
diff --git a/tests/usr.bin/xlint/lint1/d_type_conv2.exp b/tests/usr.bin/xlint/lint1/d_type_conv2.exp
index cf84e34bafb..ed0454019f1 100644
--- a/tests/usr.bin/xlint/lint1/d_type_conv2.exp
+++ b/tests/usr.bin/xlint/lint1/d_type_conv2.exp
@@ -1 +1 @@
-d_type_conv2.c(13): warning: argument #1 is converted from 'double' to 'float' [259]
+d_type_conv2.c(13): warning: argument #1 is converted from 'double' to 'float' due to prototype [259]
diff --git a/tests/usr.bin/xlint/lint1/d_type_conv3.exp b/tests/usr.bin/xlint/lint1/d_type_conv3.exp
index bd56f265770..abdb3735059 100644
--- a/tests/usr.bin/xlint/lint1/d_type_conv3.exp
+++ b/tests/usr.bin/xlint/lint1/d_type_conv3.exp
@@ -1,2 +1,2 @@
-d_type_conv3.c(12): warning: argument #1 is converted from 'long long' to 'unsigned int' [259]
+d_type_conv3.c(12): warning: argument #1 is converted from 'long long' to 'unsigned int' due to prototype [259]
d_type_conv3.c(12): warning: conversion of 'long long' to 'unsigned int' is out of range, arg #1 [295]
diff --git a/tests/usr.bin/xlint/lint1/msg_259.c b/tests/usr.bin/xlint/lint1/msg_259.c
index 0bf3d668ed7..9927f73cf93 100644
--- a/tests/usr.bin/xlint/lint1/msg_259.c
+++ b/tests/usr.bin/xlint/lint1/msg_259.c
@@ -1,4 +1,4 @@
-/* $NetBSD: msg_259.c,v 1.4 2021/01/31 14:05:00 rillig Exp $ */
+/* $NetBSD: msg_259.c,v 1.5 2021/02/04 06:55:00 rillig Exp $ */
# 3 "msg_259.c"
// Test for message: argument #%d is converted from '%s' to '%s' [259]
@@ -14,10 +14,10 @@ example(char c, int i, long l)
{
farg_char(c);
farg_int(c);
- farg_long(c);
+ farg_long(c); /* XXX: 259 on ILP32 but not LP64 */
farg_char(i); /* XXX: why no warning? */
farg_int(i);
- farg_long(i);
+ farg_long(i); /* XXX: 259 on ILP32 but not LP64 */
farg_char(l); /* XXX: why no warning? */
farg_int(l); /* expect: 259 */
farg_long(l);
diff --git a/tests/usr.bin/xlint/lint1/msg_259.exp b/tests/usr.bin/xlint/lint1/msg_259.exp
index 5e04651aa46..5b532416928 100644
--- a/tests/usr.bin/xlint/lint1/msg_259.exp
+++ b/tests/usr.bin/xlint/lint1/msg_259.exp
@@ -1 +1 @@
-msg_259.c(22): warning: argument #1 is converted from 'long' to 'int' [259]
+msg_259.c(22): warning: argument #1 is converted from 'long' to 'int' due to prototype [259]
diff --git a/usr.bin/xlint/lint1/err.c b/usr.bin/xlint/lint1/err.c
index 9d5eba38299..a90ae78afe4 100644
--- a/usr.bin/xlint/lint1/err.c
+++ b/usr.bin/xlint/lint1/err.c
@@ -1,4 +1,4 @@
-/* $NetBSD: err.c,v 1.77 2021/01/31 14:05:00 rillig Exp $ */
+/* $NetBSD: err.c,v 1.78 2021/02/04 06:54:59 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: err.c,v 1.77 2021/01/31 14:05:00 rillig Exp $");
+__RCSID("$NetBSD: err.c,v 1.78 2021/02/04 06:54:59 rillig Exp $");
#endif
#include <sys/types.h>
@@ -318,7 +318,7 @@ const char *msgs[] = {
"unterminated comment", /* 256 */
"extra characters in lint comment", /* 257 */
"unterminated string constant", /* 258 */
- "argument #%d is converted from '%s' to '%s'", /* 259 */
+ "argument #%d is converted from '%s' to '%s' due to prototype", /* 259 */
"previous declaration of %s", /* 260 */
"previous definition of %s", /* 261 */
"\\\" inside character constants undefined in traditional C", /* 262 */
diff --git a/usr.bin/xlint/lint1/tree.c b/usr.bin/xlint/lint1/tree.c
index ed5011a9c3d..650163c7e61 100644
--- a/usr.bin/xlint/lint1/tree.c
+++ b/usr.bin/xlint/lint1/tree.c
@@ -1,4 +1,4 @@
-/* $NetBSD: tree.c,v 1.204 2021/01/31 14:05:00 rillig Exp $ */
+/* $NetBSD: tree.c,v 1.205 2021/02/04 06:54:59 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: tree.c,v 1.204 2021/01/31 14:05:00 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.205 2021/02/04 06:54:59 rillig Exp $");
#endif
#include <float.h>
@@ -2101,7 +2101,7 @@ check_prototype_conversion(int arg, tspec_t nt, tspec_t ot, type_t *tp,
psize(nt) != psize(ot)) {
/* representation and/or width change */
if (!is_integer(ot) || psize(ot) > psize(INT)) {
- /* argument #%d is converted from '%s' to '%s' */
+ /* argument #%d is converted from '%s' to '%s' ... */
warning(259,
arg, type_name(tn->tn_type), type_name(tp));
}
@@ -2118,7 +2118,7 @@ check_prototype_conversion(int arg, tspec_t nt, tspec_t ot, type_t *tp,
msb(ptn->tn_val->v_quad, ot, -1) == 0) {
/* ok */
} else {
- /* argument #%d is converted from '%s' to '%s' */
+ /* argument #%d is converted from '%s' to '%s' ... */
warning(259,
arg, type_name(tn->tn_type), type_name(tp));
}