msg_241.c revision 1.3
1/*	$NetBSD: msg_241.c,v 1.3 2021/02/27 14:54:55 rillig Exp $	*/
2# 3 "msg_241.c"
3
4// Test for message: dubious operation on enum, op %s [241]
5//
6// As of February 2021, the option -e is not enabled by default in
7// share/mk/sys.mk, therefore this message is neither well-known nor
8// well-tested.
9
10/* lint1-extra-flags: -e */
11
12/*
13 * Enums are a possible implementation of bit-sets.
14 */
15enum color {
16	RED	= 1 << 0,
17	GREEN	= 1 << 1,
18	BLUE	= 1 << 2
19};
20
21extern void sink(int);
22
23void
24example(void)
25{
26	enum color c = RED;
27
28	sink(!c);			/* expect: 241 */
29	sink(~c);			/* expect: 241, 278 */
30	++c;				/* expect: 241 */
31	--c;				/* expect: 241 */
32	c++;				/* expect: 241 */
33	c--;				/* expect: 241 */
34	sink(+c);			/* expect: 241, 278 */
35	sink(-c);			/* expect: 241, 278 */
36	sink(c * c);			/* expect: 241, 278 */
37	sink(c / c);			/* expect: 241, 278 */
38	sink(c % c);			/* expect: 241, 278 */
39	sink(c + c);			/* expect: 241, 278 */
40	sink(c - c);			/* expect: 241, 278 */
41	sink(c << c);			/* expect: 241, 278 */
42	sink(c >> c);			/* expect: 241, 278 */
43
44	sink(c < c);
45	sink(c <= c);
46	sink(c > c);
47	sink(c >= c);
48	sink(c == c);
49	sink(c != c);
50
51	sink(c & c);			/* expect: 241, 278 */
52	sink(c ^ c);			/* expect: 241, 278 */
53	sink(c | c);			/* expect: 241, 278 */
54
55	sink(c && c);			/* expect: 241 */
56	sink(c || c);			/* expect: 241 */
57	sink(c ? c : BLUE);		/* expect: 278 */
58
59	c = GREEN;
60	c *= c;				/* expect: 241 */
61	c /= c;				/* expect: 241 */
62	c %= c;				/* expect: 241 */
63	c += c;				/* expect: 241 */
64	c -= c;				/* expect: 241 */
65	c <<= c;			/* expect: 241 */
66	c >>= c;			/* expect: 241 */
67	c &= c;				/* expect: 241 */
68	c ^= c;				/* expect: 241 */
69	c |= c;				/* expect: 241 */
70
71	/* The cast to unsigned is required by GCC at WARNS=6. */
72	c &= ~(unsigned)GREEN;		/* expect: 241 */
73}
74