Module Name: src
Committed By: rillig
Date: Mon Aug 30 19:48:21 UTC 2021
Modified Files:
src/tests/usr.bin/xlint/lint1: emit.c emit.exp-ln msg_280.c msg_280.exp
msg_283.c msg_283.exp
src/usr.bin/xlint/lint1: emit1.c
Log Message:
tests/lint: test varargs, printflike, scanflike
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/tests/usr.bin/xlint/lint1/emit.c
cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/emit.exp-ln
cvs rdiff -u -r1.2 -r1.3 src/tests/usr.bin/xlint/lint1/msg_280.c \
src/tests/usr.bin/xlint/lint1/msg_280.exp \
src/tests/usr.bin/xlint/lint1/msg_283.c \
src/tests/usr.bin/xlint/lint1/msg_283.exp
cvs rdiff -u -r1.51 -r1.52 src/usr.bin/xlint/lint1/emit1.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/emit.c
diff -u src/tests/usr.bin/xlint/lint1/emit.c:1.3 src/tests/usr.bin/xlint/lint1/emit.c:1.4
--- src/tests/usr.bin/xlint/lint1/emit.c:1.3 Sat Aug 28 16:21:24 2021
+++ src/tests/usr.bin/xlint/lint1/emit.c Mon Aug 30 19:48:21 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: emit.c,v 1.3 2021/08/28 16:21:24 rillig Exp $ */
+/* $NetBSD: emit.c,v 1.4 2021/08/30 19:48:21 rillig Exp $ */
# 3 "emit.c"
/*
@@ -7,8 +7,8 @@
* consistently across different translation units.
*/
-
-
+/* Do not warn about unused parameters. */
+/* lint1-extra-flags: -X 231 */
/*
* Define some derived types.
@@ -179,3 +179,73 @@ call_gcc_builtins(int x, long *ptr)
__atomic_load(ptr, &value, 0);
}
+
+/*
+ * XXX: It's strange that a function can be annotated with VARARGS even
+ * though it does not take varargs at all.
+ *
+ * This feature is not useful for modern code anyway, it focused on pre-C90
+ * code that did not have function prototypes.
+ */
+
+/* VARARGS */
+void
+varargs_comment(const char *fmt)
+{
+}
+
+/* VARARGS 0 */
+void
+varargs_0_comment(const char *fmt)
+{
+}
+
+/* VARARGS 3 */
+void
+varargs_3_comment(int a, int b, int c, const char *fmt)
+{
+}
+
+/* PRINTFLIKE */
+void
+printflike_comment(const char *fmt)
+{
+}
+
+/* PRINTFLIKE 0 */
+void
+printflike_0_comment(const char *fmt)
+{
+}
+
+/* PRINTFLIKE 3 */
+void
+printflike_3_comment(int a, int b, const char *fmt)
+{
+}
+
+/* PRINTFLIKE 10 */
+void
+printflike_10_comment(int a1, int a2, int a3, int a4, int a5,
+ int a6, int a7, int a8, int a9,
+ const char *fmt)
+{
+}
+
+/* SCANFLIKE */
+void
+scanflike_comment(const char *fmt)
+{
+}
+
+/* SCANFLIKE 0 */
+void
+scanflike_0_comment(const char *fmt)
+{
+}
+
+/* SCANFLIKE 3 */
+void
+scanflike_3_comment(int a, int b, const char *fmt)
+{
+}
Index: src/tests/usr.bin/xlint/lint1/emit.exp-ln
diff -u src/tests/usr.bin/xlint/lint1/emit.exp-ln:1.4 src/tests/usr.bin/xlint/lint1/emit.exp-ln:1.5
--- src/tests/usr.bin/xlint/lint1/emit.exp-ln:1.4 Sat Aug 28 16:36:54 2021
+++ src/tests/usr.bin/xlint/lint1/emit.exp-ln Mon Aug 30 19:48:21 2021
@@ -57,3 +57,13 @@ Semit.c
164c0.164s2"%\a%\b%\f%\n%\r%\t%\v%\177"i9my_printff2PcCPCV
159d0.159d14cover_outqcharF0V
173d0.173d17call_gcc_builtinsF2IPLV
+193d0.193v0d15varargs_commentF1PcCV
+199d0.199v0d17varargs_0_commentF1PcCV
+205d0.205v3d17varargs_3_commentF4IIIPcCV
+211d0.211d18printflike_commentF1PcCV
+217d0.217d20printflike_0_commentF1PcCV
+223d0.223v3P3d20printflike_3_commentF3IIPcCV
+229d0.229v10P10d21printflike_10_commentF10IIIIIIIIIPcCV
+237d0.237d17scanflike_commentF1PcCV
+243d0.243d19scanflike_0_commentF1PcCV
+249d0.249v3S3d19scanflike_3_commentF3IIPcCV
Index: src/tests/usr.bin/xlint/lint1/msg_280.c
diff -u src/tests/usr.bin/xlint/lint1/msg_280.c:1.2 src/tests/usr.bin/xlint/lint1/msg_280.c:1.3
--- src/tests/usr.bin/xlint/lint1/msg_280.c:1.2 Sun Feb 21 09:07:58 2021
+++ src/tests/usr.bin/xlint/lint1/msg_280.c Mon Aug 30 19:48:21 2021
@@ -1,7 +1,60 @@
-/* $NetBSD: msg_280.c,v 1.2 2021/02/21 09:07:58 rillig Exp $ */
+/* $NetBSD: msg_280.c,v 1.3 2021/08/30 19:48:21 rillig Exp $ */
# 3 "msg_280.c"
// Test for message: must be outside function: /* %s */ [280]
-TODO: "Add example code that triggers the above message." /* expect: 249 */
-TODO: "Add example code that almost triggers the above message."
+/* VARARGS */
+void
+varargs_ok(const char *str, ...)
+{
+ (void)str;
+}
+
+void
+/* XXX: Why is this comment considered 'outside' enough? */
+varargs_bad_param(/* VARARGS */ const char *str, ...)
+{
+ /* expect+1: warning: must be outside function: */
+ /* VARARGS */
+ (void)str;
+}
+
+void
+/* expect+1: warning: must be outside function: */
+varargs_bad_ellipsis(const char *str, /* VARARGS */ ...)
+{
+ (void)str;
+}
+
+void
+/* XXX: Why is this comment considered 'outside' enough? */
+varargs_bad_body(const char *str, ...)
+{
+ /* expect+1: warning: must be outside function */
+ /* VARARGS */
+ (void)str;
+}
+
+void
+/* expect+1: warning: argument 'str' unused in function 'argsused_bad_body' [231] */
+argsused_bad_body(const char *str)
+{
+ /* expect+1: warning: must be outside function */
+ /* ARGSUSED */
+}
+
+void
+printflike_bad_body(const char *fmt, ...)
+{
+ /* expect+1: warning: must be outside function */
+ /* PRINTFLIKE */
+ (void)fmt;
+}
+
+void
+scanflike_bad_body(const char *fmt, ...)
+{
+ /* expect+1: warning: must be outside function */
+ /* SCANFLIKE */
+ (void)fmt;
+}
Index: src/tests/usr.bin/xlint/lint1/msg_280.exp
diff -u src/tests/usr.bin/xlint/lint1/msg_280.exp:1.2 src/tests/usr.bin/xlint/lint1/msg_280.exp:1.3
--- src/tests/usr.bin/xlint/lint1/msg_280.exp:1.2 Sun Mar 21 20:45:00 2021
+++ src/tests/usr.bin/xlint/lint1/msg_280.exp Mon Aug 30 19:48:21 2021
@@ -1 +1,7 @@
-msg_280.c(6): error: syntax error ':' [249]
+msg_280.c(18): warning: must be outside function: /* VARARGS */ [280]
+msg_280.c(24): warning: must be outside function: /* VARARGS */ [280]
+msg_280.c(34): warning: must be outside function: /* VARARGS */ [280]
+msg_280.c(43): warning: must be outside function: /* ARGSUSED */ [280]
+msg_280.c(40): warning: argument 'str' unused in function 'argsused_bad_body' [231]
+msg_280.c(50): warning: must be outside function: /* PRINTFLIKE */ [280]
+msg_280.c(58): warning: must be outside function: /* SCANFLIKE */ [280]
Index: src/tests/usr.bin/xlint/lint1/msg_283.c
diff -u src/tests/usr.bin/xlint/lint1/msg_283.c:1.2 src/tests/usr.bin/xlint/lint1/msg_283.c:1.3
--- src/tests/usr.bin/xlint/lint1/msg_283.c:1.2 Sun Feb 21 09:07:58 2021
+++ src/tests/usr.bin/xlint/lint1/msg_283.c Mon Aug 30 19:48:21 2021
@@ -1,7 +1,32 @@
-/* $NetBSD: msg_283.c,v 1.2 2021/02/21 09:07:58 rillig Exp $ */
+/* $NetBSD: msg_283.c,v 1.3 2021/08/30 19:48:21 rillig Exp $ */
# 3 "msg_283.c"
// Test for message: argument number mismatch with directive: /* %s */ [283]
-TODO: "Add example code that triggers the above message." /* expect: 249 */
-TODO: "Add example code that almost triggers the above message."
+/* Do not warn about unused parameters. */
+/* lint1-extra-flags: -X 231 */
+
+/* PRINTFLIKE */
+void
+printflike_comment(const char *fmt)
+{
+}
+
+/* PRINTFLIKE 0 */
+void
+printflike_0_comment(const char *fmt)
+{
+}
+
+/* PRINTFLIKE 2 */
+void
+printflike_2_comment(int a, const char *fmt)
+{
+}
+
+/* PRINTFLIKE 3 */
+void
+printflike_3_comment(int a, const char *fmt)
+/* expect+1: warning: argument number mismatch with directive */
+{
+}
Index: src/tests/usr.bin/xlint/lint1/msg_283.exp
diff -u src/tests/usr.bin/xlint/lint1/msg_283.exp:1.2 src/tests/usr.bin/xlint/lint1/msg_283.exp:1.3
--- src/tests/usr.bin/xlint/lint1/msg_283.exp:1.2 Sun Mar 21 20:45:00 2021
+++ src/tests/usr.bin/xlint/lint1/msg_283.exp Mon Aug 30 19:48:21 2021
@@ -1 +1 @@
-msg_283.c(6): error: syntax error ':' [249]
+msg_283.c(31): warning: argument number mismatch with directive: /* PRINTFLIKE */ [283]
Index: src/usr.bin/xlint/lint1/emit1.c
diff -u src/usr.bin/xlint/lint1/emit1.c:1.51 src/usr.bin/xlint/lint1/emit1.c:1.52
--- src/usr.bin/xlint/lint1/emit1.c:1.51 Sat Aug 28 12:21:53 2021
+++ src/usr.bin/xlint/lint1/emit1.c Mon Aug 30 19:48:21 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: emit1.c,v 1.51 2021/08/28 12:21:53 rillig Exp $ */
+/* $NetBSD: emit1.c,v 1.52 2021/08/30 19:48:21 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -38,7 +38,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: emit1.c,v 1.51 2021/08/28 12:21:53 rillig Exp $");
+__RCSID("$NetBSD: emit1.c,v 1.52 2021/08/30 19:48:21 rillig Exp $");
#endif
#include "lint1.h"
@@ -99,7 +99,7 @@ outtype(const type_t *tp)
while (tp != NULL) {
if ((ts = tp->t_tspec) == INT && tp->t_is_enum)
ts = ENUM;
- /* Available letters: ----E-GH--K-MNO--R--U-W-YZ */
+ /* Available letters: ------GH--K-MNO--R--U-W-YZ */
switch (ts) {
case BOOL: t = 'B'; s = '\0'; break;
case CHAR: t = 'C'; s = '\0'; break;