1 /* $NetBSD: msg_241.c,v 1.4 2021/02/27 15:29:15 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 */ 15 enum color { 16 RED = 1 << 0, 17 GREEN = 1 << 1, 18 BLUE = 1 << 2 19 }; 20 21 extern void sink_bool(_Bool); 22 extern void sink_int(int); 23 extern void sink_color(enum color); 24 25 void 26 example(void) 27 { 28 enum color c = RED; 29 30 sink_bool(!c); /* expect: 241 */ 31 sink_color(~c); /* expect: 241 */ 32 ++c; /* expect: 241 */ 33 --c; /* expect: 241 */ 34 c++; /* expect: 241 */ 35 c--; /* expect: 241 */ 36 sink_color(+c); /* expect: 241 */ 37 sink_color(-c); /* expect: 241 */ 38 sink_color(c * c); /* expect: 241 */ 39 sink_color(c / c); /* expect: 241 */ 40 sink_color(c % c); /* expect: 241 */ 41 sink_color(c + c); /* expect: 241 */ 42 sink_color(c - c); /* expect: 241 */ 43 sink_color(c << c); /* expect: 241 */ 44 sink_color(c >> c); /* expect: 241 */ 45 46 sink_bool(c < c); 47 sink_bool(c <= c); 48 sink_bool(c > c); 49 sink_bool(c >= c); 50 sink_bool(c == c); 51 sink_bool(c != c); 52 53 sink_color(c & c); /* expect: 241 */ 54 sink_color(c ^ c); /* expect: 241 */ 55 sink_color(c | c); /* expect: 241 */ 56 57 sink_bool(c && c); /* expect: 241 */ 58 sink_bool(c || c); /* expect: 241 */ 59 sink_color(c ? c : BLUE); 60 61 c = GREEN; 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 c ^= c; /* expect: 241 */ 71 c |= c; /* expect: 241 */ 72 73 /* The cast to unsigned is required by GCC at WARNS=6. */ 74 c &= ~(unsigned)GREEN; /* expect: 241 */ 75 } 76