File: conditional-type.c

package info (click to toggle)
sparse 0.6.4-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,868 kB
  • sloc: ansic: 46,050; sh: 614; python: 301; perl: 293; makefile: 279
file content (99 lines) | stat: -rw-r--r-- 1,944 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
extern void afun(void);
extern void vcond(void);
static int array[3];

struct state {
	int nr:2;
};

enum number {
	zero,
	one,
	two,
	many,
};

static int bad_if(struct state s)
{
	if (vcond()) return 1;
	if (s) return 1;
	return 0;
}
static void bad_if2(int *a, int *b)
{
	if (vcond()) *a = 1;
	*b = 0;
}
static int bad_sel(struct state s)
{
	return vcond() ? 1 : 0;
	return s ? 1 : 0;
}
static int bad_loop_void(void)
{
	while (vcond())
		;
	for (;vcond();)
		;
	do
		;
	while (vcond());
	return 0;
}


static int good_if_int(int a, _Bool b, long c, unsigned char d)
{
	if (a) return 1;
	if (b) return 1;
	if (c) return 1;
	if (d) return 1;
	return 0;
}
static int good_if_float(float a, double b)
{
	if (a) return 1;
	if (b) return 1;
	return 0;
}
static int good_if_enum(void)
{
	if (many) return 1;
	return 0;
}
static int good_if_bitfield(struct state s, struct state *p)
{
	if (s.nr) return 1;
	if (p->nr) return 1;
	return 0;
}
static int good_if_ptr(void *ptr)
{
	if (ptr) return 1;
	if (array) return 1;
	if (afun) return 1;
	return 0;
}

/*
 * check-name: conditional-type
 *
 * check-error-start
conditional-type.c:18:18: error: non-scalar type in conditional:
conditional-type.c:18:18:    void
conditional-type.c:19:13: error: non-scalar type in conditional:
conditional-type.c:19:13:    struct state s
conditional-type.c:24:18: error: non-scalar type in conditional:
conditional-type.c:24:18:    void
conditional-type.c:29:21: error: non-scalar type in conditional:
conditional-type.c:29:21:    void
conditional-type.c:30:16: error: non-scalar type in conditional:
conditional-type.c:30:16:    struct state s
conditional-type.c:34:21: error: non-scalar type in conditional:
conditional-type.c:34:21:    void
conditional-type.c:36:20: error: non-scalar type in conditional:
conditional-type.c:36:20:    void
conditional-type.c:40:21: error: non-scalar type in conditional:
conditional-type.c:40:21:    void
 * check-error-end
 */