diff options
| author | rillig <rillig@NetBSD.org> | 2021-02-04 06:54:59 +0000 |
|---|---|---|
| committer | rillig <rillig@NetBSD.org> | 2021-02-04 06:54:59 +0000 |
| commit | be9c8d46243a90bd18bbff118752dbe4cf3028ba (patch) | |
| tree | 7594415a5af2d9136783d1f06a3f0838faf0f5c8 | |
| parent | 1153457df70603d24f002884abc03cb7025d47de (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.exp | 2 | ||||
| -rw-r--r-- | tests/usr.bin/xlint/lint1/d_gcc_extension.exp | 4 | ||||
| -rw-r--r-- | tests/usr.bin/xlint/lint1/d_type_conv1.exp | 2 | ||||
| -rw-r--r-- | tests/usr.bin/xlint/lint1/d_type_conv2.exp | 2 | ||||
| -rw-r--r-- | tests/usr.bin/xlint/lint1/d_type_conv3.exp | 2 | ||||
| -rw-r--r-- | tests/usr.bin/xlint/lint1/msg_259.c | 6 | ||||
| -rw-r--r-- | tests/usr.bin/xlint/lint1/msg_259.exp | 2 | ||||
| -rw-r--r-- | usr.bin/xlint/lint1/err.c | 6 | ||||
| -rw-r--r-- | usr.bin/xlint/lint1/tree.c | 8 |
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)); } |
