db/fixup_kernel.sh: fix clear_user() handling
[smatch.git] / validation / conditional-type.c
blob6e2da9b525c038b8a694327844edfb19c3ca0891
1 extern void afun(void);
2 extern void vcond(void);
3 static int array[3];
5 struct state {
6 int nr:2;
7 };
9 enum number {
10 zero,
11 one,
12 two,
13 many,
16 static int bad_if(struct state s)
18 if (vcond()) return 1;
19 if (s) return 1;
20 return 0;
22 static void bad_if2(int *a, int *b)
24 if (vcond()) *a = 1;
25 *b = 0;
27 static int bad_sel(struct state s)
29 return vcond() ? 1 : 0;
30 return s ? 1 : 0;
32 static int bad_loop_void(void)
34 while (vcond())
36 for (;vcond();)
40 while (vcond());
41 return 0;
45 static int good_if_int(int a, _Bool b, long c, unsigned char d)
47 if (a) return 1;
48 if (b) return 1;
49 if (c) return 1;
50 if (d) return 1;
51 return 0;
53 static int good_if_float(float a, double b)
55 if (a) return 1;
56 if (b) return 1;
57 return 0;
59 static int good_if_enum(void)
61 if (many) return 1;
62 return 0;
64 static int good_if_bitfield(struct state s, struct state *p)
66 if (s.nr) return 1;
67 if (p->nr) return 1;
68 return 0;
70 static int good_if_ptr(void *ptr)
72 if (ptr) return 1;
73 if (array) return 1;
74 if (afun) return 1;
75 return 0;
79 * check-name: conditional-type
81 * check-error-start
82 conditional-type.c:18:18: error: non-scalar type in conditional:
83 conditional-type.c:18:18: void
84 conditional-type.c:19:13: error: non-scalar type in conditional:
85 conditional-type.c:19:13: struct state s
86 conditional-type.c:24:18: error: non-scalar type in conditional:
87 conditional-type.c:24:18: void
88 conditional-type.c:29:21: error: non-scalar type in conditional:
89 conditional-type.c:29:21: void
90 conditional-type.c:30:16: error: non-scalar type in conditional:
91 conditional-type.c:30:16: struct state s
92 conditional-type.c:34:21: error: non-scalar type in conditional:
93 conditional-type.c:34:21: void
94 conditional-type.c:36:20: error: non-scalar type in conditional:
95 conditional-type.c:36:20: void
96 conditional-type.c:40:21: error: non-scalar type in conditional:
97 conditional-type.c:40:21: void
98 * check-error-end