msg_241.c revision 1.3
11.3Srillig/* $NetBSD: msg_241.c,v 1.3 2021/02/27 14:54:55 rillig Exp $ */ 21.1Srillig# 3 "msg_241.c" 31.1Srillig 41.1Srillig// Test for message: dubious operation on enum, op %s [241] 51.3Srillig// 61.3Srillig// As of February 2021, the option -e is not enabled by default in 71.3Srillig// share/mk/sys.mk, therefore this message is neither well-known nor 81.3Srillig// well-tested. 91.1Srillig 101.3Srillig/* lint1-extra-flags: -e */ 111.3Srillig 121.3Srillig/* 131.3Srillig * Enums are a possible implementation of bit-sets. 141.3Srillig */ 151.3Srilligenum color { 161.3Srillig RED = 1 << 0, 171.3Srillig GREEN = 1 << 1, 181.3Srillig BLUE = 1 << 2 191.3Srillig}; 201.3Srillig 211.3Srilligextern void sink(int); 221.3Srillig 231.3Srilligvoid 241.3Srilligexample(void) 251.3Srillig{ 261.3Srillig enum color c = RED; 271.3Srillig 281.3Srillig sink(!c); /* expect: 241 */ 291.3Srillig sink(~c); /* expect: 241, 278 */ 301.3Srillig ++c; /* expect: 241 */ 311.3Srillig --c; /* expect: 241 */ 321.3Srillig c++; /* expect: 241 */ 331.3Srillig c--; /* expect: 241 */ 341.3Srillig sink(+c); /* expect: 241, 278 */ 351.3Srillig sink(-c); /* expect: 241, 278 */ 361.3Srillig sink(c * c); /* expect: 241, 278 */ 371.3Srillig sink(c / c); /* expect: 241, 278 */ 381.3Srillig sink(c % c); /* expect: 241, 278 */ 391.3Srillig sink(c + c); /* expect: 241, 278 */ 401.3Srillig sink(c - c); /* expect: 241, 278 */ 411.3Srillig sink(c << c); /* expect: 241, 278 */ 421.3Srillig sink(c >> c); /* expect: 241, 278 */ 431.3Srillig 441.3Srillig sink(c < c); 451.3Srillig sink(c <= c); 461.3Srillig sink(c > c); 471.3Srillig sink(c >= c); 481.3Srillig sink(c == c); 491.3Srillig sink(c != c); 501.3Srillig 511.3Srillig sink(c & c); /* expect: 241, 278 */ 521.3Srillig sink(c ^ c); /* expect: 241, 278 */ 531.3Srillig sink(c | c); /* expect: 241, 278 */ 541.3Srillig 551.3Srillig sink(c && c); /* expect: 241 */ 561.3Srillig sink(c || c); /* expect: 241 */ 571.3Srillig sink(c ? c : BLUE); /* expect: 278 */ 581.3Srillig 591.3Srillig c = GREEN; 601.3Srillig c *= c; /* expect: 241 */ 611.3Srillig c /= c; /* expect: 241 */ 621.3Srillig c %= c; /* expect: 241 */ 631.3Srillig c += c; /* expect: 241 */ 641.3Srillig c -= c; /* expect: 241 */ 651.3Srillig c <<= c; /* expect: 241 */ 661.3Srillig c >>= c; /* expect: 241 */ 671.3Srillig c &= c; /* expect: 241 */ 681.3Srillig c ^= c; /* expect: 241 */ 691.3Srillig c |= c; /* expect: 241 */ 701.3Srillig 711.3Srillig /* The cast to unsigned is required by GCC at WARNS=6. */ 721.3Srillig c &= ~(unsigned)GREEN; /* expect: 241 */ 731.3Srillig} 74