msg_130.c revision 1.7
1/*	$NetBSD: msg_130.c,v 1.7 2021/03/05 16:35:52 rillig Exp $	*/
2# 3 "msg_130.c"
3
4// Test for message: enum type mismatch: '%s' '%s' '%s' [130]
5
6/* See also msg_241.c, which covers unusual operators on enums. */
7
8enum color {
9	RED	= 1 << 0,
10	GREEN	= 1 << 1,
11	BLUE	= 1 << 2
12};
13
14enum size {
15	SMALL,
16	MEDIUM,
17	LARGE
18};
19
20enum daytime {
21	NIGHT, MORNING, NOON, EVENING
22};
23
24void sink(_Bool);
25
26void
27example(_Bool cond, enum color c, enum size s)
28{
29	sink(cond ? GREEN : MORNING);	/* expect: 130 */
30
31	sink(c != s);			/* expect: 130 */
32	sink(c == s);			/* expect: 130 */
33	sink((c & MEDIUM) != 0);	/* might be useful to warn about */
34	sink((c | MEDIUM) != 0);	/* might be useful to warn about */
35
36	c |= MEDIUM;			/* might be useful to warn about */
37	c &= MEDIUM;			/* might be useful to warn about */
38
39	/* The cast to unsigned is required by GCC at WARNS=6. */
40	c &= ~(unsigned)MEDIUM;		/* might be useful to warn about */
41}
42
43void
44switch_example(enum color c)
45{
46	switch (c) {
47	case EVENING:			/* TODO: 130 */
48	case LARGE:			/* TODO: 130 */
49		sink(1 == 1);
50		break;
51	default:
52		break;
53	}
54}
55