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); +}