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