op_colon.c revision 1.2 1 /* $NetBSD: op_colon.c,v 1.2 2022/01/15 14:22:03 rillig Exp $ */
2 # 3 "op_colon.c"
3
4 /*
5 * Test handling of the operator ':', as part of the '?:'.
6 */
7
8 /* lint1-extra-flags: -p */
9
10 void sink(void *);
11
12 void
13 test_merge_qualifiers(_Bool cond, int *p, const int *c, volatile int *v,
14 const volatile int *cv)
15 {
16 sink(cond ? p : p);
17 /* expect+1: 'pointer to const int' */
18 sink(cond ? p : c);
19 /* expect+1: 'pointer to volatile int' */
20 sink(cond ? p : v);
21 /* expect+1: 'pointer to const volatile int' */
22 sink(cond ? p : cv);
23
24 /* expect+1: 'pointer to const int' */
25 sink(cond ? c : p);
26 /* expect+1: 'pointer to const int' */
27 sink(cond ? c : c);
28 /* expect+1: 'pointer to const volatile int' */
29 sink(cond ? c : v);
30 /* expect+1: 'pointer to const volatile int' */
31 sink(cond ? c : cv);
32
33 /* expect+1: 'pointer to volatile int' */
34 sink(cond ? v : p);
35 /* expect+1: 'pointer to const volatile int' */
36 sink(cond ? v : c);
37 /* expect+1: 'pointer to volatile int' */
38 sink(cond ? v : v);
39 /* expect+1: 'pointer to const volatile int' */
40 sink(cond ? v : cv);
41
42 /* expect+1: 'pointer to const volatile int' */
43 sink(cond ? cv : p);
44 /* expect+1: 'pointer to const volatile int' */
45 sink(cond ? cv : c);
46 /* expect+1: 'pointer to const volatile int' */
47 sink(cond ? cv : v);
48 /* expect+1: 'pointer to const volatile int' */
49 sink(cond ? cv : cv);
50 }
51