Home | History | Annotate | Line # | Download | only in lint1
op_colon.c revision 1.4
      1 /*	$NetBSD: op_colon.c,v 1.4 2023/01/03 22:02:20 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 struct unknown {
     11 	int member;
     12 };
     13 
     14 void
     15 sink(struct unknown *);
     16 
     17 void
     18 test_merge_qualifiers(_Bool cond, int *p, const int *c, volatile int *v,
     19 		      const volatile int *cv)
     20 {
     21 	/* expect+1: ... 'pointer to int' ... */
     22 	sink(cond ? p : p);
     23 	/* expect+1: ... 'pointer to const int' ... */
     24 	sink(cond ? p : c);
     25 	/* expect+1: ... 'pointer to volatile int' ... */
     26 	sink(cond ? p : v);
     27 	/* expect+1: ... 'pointer to const volatile int' ... */
     28 	sink(cond ? p : cv);
     29 
     30 	/* expect+1: ... 'pointer to const int' ... */
     31 	sink(cond ? c : p);
     32 	/* expect+1: ... 'pointer to const int' ... */
     33 	sink(cond ? c : c);
     34 	/* expect+1: ... 'pointer to const volatile int' ... */
     35 	sink(cond ? c : v);
     36 	/* expect+1: ... 'pointer to const volatile int' ... */
     37 	sink(cond ? c : cv);
     38 
     39 	/* expect+1: ... 'pointer to volatile int' ... */
     40 	sink(cond ? v : p);
     41 	/* expect+1: ... 'pointer to const volatile int' ... */
     42 	sink(cond ? v : c);
     43 	/* expect+1: ... 'pointer to volatile int' ... */
     44 	sink(cond ? v : v);
     45 	/* expect+1: ... 'pointer to const volatile int' ... */
     46 	sink(cond ? v : cv);
     47 
     48 	/* expect+1: ... 'pointer to const volatile int' ... */
     49 	sink(cond ? cv : p);
     50 	/* expect+1: ... 'pointer to const volatile int' ... */
     51 	sink(cond ? cv : c);
     52 	/* expect+1: ... 'pointer to const volatile int' ... */
     53 	sink(cond ? cv : v);
     54 	/* expect+1: ... 'pointer to const volatile int' ... */
     55 	sink(cond ? cv : cv);
     56 }
     57 
     58 void
     59 c99_6_5_15_p8(
     60     _Bool cond,
     61     const void *c_vp,
     62     void *vp,
     63     const int *c_ip,
     64     volatile int *v_ip,
     65     int *ip,
     66     const char *c_cp
     67 )
     68 {
     69 	/* FIXME: expect+2: ... 'pointer to const void' ... */
     70 	/* FIXME: expect+2: ... 'pointer to const void' ... */
     71 	/* expect+2: ... 'pointer to const int' ... */
     72 	/* expect+2: ... 'pointer to const int' ... */
     73 	sink(cond ? c_vp : c_ip);
     74 	sink(cond ? c_ip : c_vp);
     75 
     76 	/* expect+2: ... 'pointer to volatile int' ... */
     77 	/* expect+2: ... 'pointer to volatile int' ... */
     78 	sink(cond ? v_ip : 0);
     79 	sink(cond ? 0 : v_ip);
     80 
     81 	/* expect+2: ... 'pointer to const volatile int' ... */
     82 	/* expect+2: ... 'pointer to const volatile int' ... */
     83 	sink(cond ? c_ip : v_ip);
     84 	sink(cond ? v_ip : c_ip);
     85 
     86 	/* FIXME: expect+2: ... 'pointer to const void' ... */
     87 	/* FIXME: expect+2: ... 'pointer to const void' ... */
     88 	/* expect+2: ... 'pointer to const char' ... */
     89 	/* expect+2: ... 'pointer to const char' ... */
     90 	sink(cond ? vp : c_cp);
     91 	sink(cond ? c_cp : vp);
     92 
     93 	/* expect+2: ... 'pointer to const int' ... */
     94 	/* expect+2: ... 'pointer to const int' ... */
     95 	sink(cond ? ip : c_ip);
     96 	sink(cond ? c_ip : ip);
     97 
     98 	/* FIXME: expect+2: ... 'pointer to void' ... */
     99 	/* FIXME: expect+2: ... 'pointer to void' ... */
    100 	/* expect+2: ... 'pointer to int' ... */
    101 	/* expect+2: ... 'pointer to int' ... */
    102 	sink(cond ? vp : ip);
    103 	sink(cond ? ip : vp);
    104 }
    105