Module Name: src
Committed By: rillig
Date: Tue Jan 3 22:02:20 UTC 2023
Modified Files:
src/tests/usr.bin/xlint/lint1: op_colon.c
Log Message:
tests/lint: demonstrate wrong type for '?:' expressions
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/tests/usr.bin/xlint/lint1/op_colon.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/op_colon.c
diff -u src/tests/usr.bin/xlint/lint1/op_colon.c:1.3 src/tests/usr.bin/xlint/lint1/op_colon.c:1.4
--- src/tests/usr.bin/xlint/lint1/op_colon.c:1.3 Fri Jun 17 18:54:53 2022
+++ src/tests/usr.bin/xlint/lint1/op_colon.c Tue Jan 3 22:02:20 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: op_colon.c,v 1.3 2022/06/17 18:54:53 rillig Exp $ */
+/* $NetBSD: op_colon.c,v 1.4 2023/01/03 22:02:20 rillig Exp $ */
# 3 "op_colon.c"
/*
@@ -7,12 +7,18 @@
/* lint1-extra-flags: -p */
-void sink(void *);
+struct unknown {
+ int member;
+};
+
+void
+sink(struct unknown *);
void
test_merge_qualifiers(_Bool cond, int *p, const int *c, volatile int *v,
const volatile int *cv)
{
+ /* expect+1: ... 'pointer to int' ... */
sink(cond ? p : p);
/* expect+1: ... 'pointer to const int' ... */
sink(cond ? p : c);
@@ -48,3 +54,51 @@ test_merge_qualifiers(_Bool cond, int *p
/* expect+1: ... 'pointer to const volatile int' ... */
sink(cond ? cv : cv);
}
+
+void
+c99_6_5_15_p8(
+ _Bool cond,
+ const void *c_vp,
+ void *vp,
+ const int *c_ip,
+ volatile int *v_ip,
+ int *ip,
+ const char *c_cp
+)
+{
+ /* FIXME: expect+2: ... 'pointer to const void' ... */
+ /* FIXME: expect+2: ... 'pointer to const void' ... */
+ /* expect+2: ... 'pointer to const int' ... */
+ /* expect+2: ... 'pointer to const int' ... */
+ sink(cond ? c_vp : c_ip);
+ sink(cond ? c_ip : c_vp);
+
+ /* expect+2: ... 'pointer to volatile int' ... */
+ /* expect+2: ... 'pointer to volatile int' ... */
+ sink(cond ? v_ip : 0);
+ sink(cond ? 0 : v_ip);
+
+ /* expect+2: ... 'pointer to const volatile int' ... */
+ /* expect+2: ... 'pointer to const volatile int' ... */
+ sink(cond ? c_ip : v_ip);
+ sink(cond ? v_ip : c_ip);
+
+ /* FIXME: expect+2: ... 'pointer to const void' ... */
+ /* FIXME: expect+2: ... 'pointer to const void' ... */
+ /* expect+2: ... 'pointer to const char' ... */
+ /* expect+2: ... 'pointer to const char' ... */
+ sink(cond ? vp : c_cp);
+ sink(cond ? c_cp : vp);
+
+ /* expect+2: ... 'pointer to const int' ... */
+ /* expect+2: ... 'pointer to const int' ... */
+ sink(cond ? ip : c_ip);
+ sink(cond ? c_ip : ip);
+
+ /* FIXME: expect+2: ... 'pointer to void' ... */
+ /* FIXME: expect+2: ... 'pointer to void' ... */
+ /* expect+2: ... 'pointer to int' ... */
+ /* expect+2: ... 'pointer to int' ... */
+ sink(cond ? vp : ip);
+ sink(cond ? ip : vp);
+}