1 extern void afun(void);
   2 extern void vcond(void);
   3 static int array[3];
   4 
   5 struct state {
   6         int nr:2;
   7 };
   8 
   9 enum number {
  10         zero,
  11         one,
  12         two,
  13         many,
  14 };
  15 
  16 static int bad_if(struct state s)
  17 {
  18         if (vcond()) return 1;
  19         if (s) return 1;
  20         return 0;
  21 }
  22 static void bad_if2(int *a, int *b)
  23 {
  24         if (vcond()) *a = 1;
  25         *b = 0;
  26 }
  27 static int bad_sel(struct state s)
  28 {
  29         return vcond() ? 1 : 0;
  30         return s ? 1 : 0;
  31 }
  32 static int bad_loop_void(void)
  33 {
  34         while (vcond())
  35                 ;
  36         for (;vcond();)
  37                 ;
  38         do
  39                 ;
  40         while (vcond());
  41         return 0;
  42 }
  43 
  44 
  45 static int good_if_int(int a, _Bool b, long c, unsigned char d)
  46 {
  47         if (a) return 1;
  48         if (b) return 1;
  49         if (c) return 1;
  50         if (d) return 1;
  51         return 0;
  52 }
  53 static int good_if_float(float a, double b)
  54 {
  55         if (a) return 1;
  56         if (b) return 1;
  57         return 0;
  58 }
  59 static int good_if_enum(void)
  60 {
  61         if (many) return 1;
  62         return 0;
  63 }
  64 static int good_if_bitfield(struct state s, struct state *p)
  65 {
  66         if (s.nr) return 1;
  67         if (p->nr) return 1;
  68         return 0;
  69 }
  70 static int good_if_ptr(void *ptr)
  71 {
  72         if (ptr) return 1;
  73         if (array) return 1;
  74         if (afun) return 1;
  75         return 0;
  76 }
  77 
  78 /*
  79  * check-name: conditional-type
  80  *
  81  * check-error-start
  82 conditional-type.c:18:18: error: incorrect type in conditional
  83 conditional-type.c:18:18:    got void
  84 conditional-type.c:19:13: error: incorrect type in conditional
  85 conditional-type.c:19:13:    got struct state s
  86 conditional-type.c:24:18: error: incorrect type in conditional
  87 conditional-type.c:24:18:    got void
  88 conditional-type.c:29:21: error: incorrect type in conditional
  89 conditional-type.c:29:21:    got void
  90 conditional-type.c:30:16: error: incorrect type in conditional
  91 conditional-type.c:30:16:    got struct state s
  92 conditional-type.c:34:21: error: incorrect type in conditional
  93 conditional-type.c:34:21:    got void
  94 conditional-type.c:36:20: error: incorrect type in conditional
  95 conditional-type.c:36:20:    got void
  96 conditional-type.c:40:21: error: incorrect type in conditional
  97 conditional-type.c:40:21:    got void
  98  * check-error-end
  99  */