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