msg_241.c revision 1.4
11.4Srillig/*	$NetBSD: msg_241.c,v 1.4 2021/02/27 15:29:15 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.4Srilligextern void sink_bool(_Bool);
221.4Srilligextern void sink_int(int);
231.4Srilligextern void sink_color(enum color);
241.3Srillig
251.3Srilligvoid
261.3Srilligexample(void)
271.3Srillig{
281.3Srillig	enum color c = RED;
291.3Srillig
301.4Srillig	sink_bool(!c);		/* expect: 241 */
311.4Srillig	sink_color(~c);		/* expect: 241 */
321.4Srillig	++c;			/* expect: 241 */
331.4Srillig	--c;			/* expect: 241 */
341.4Srillig	c++;			/* expect: 241 */
351.4Srillig	c--;			/* expect: 241 */
361.4Srillig	sink_color(+c);		/* expect: 241 */
371.4Srillig	sink_color(-c);		/* expect: 241 */
381.4Srillig	sink_color(c * c);	/* expect: 241 */
391.4Srillig	sink_color(c / c);	/* expect: 241 */
401.4Srillig	sink_color(c % c);	/* expect: 241 */
411.4Srillig	sink_color(c + c);	/* expect: 241 */
421.4Srillig	sink_color(c - c);	/* expect: 241 */
431.4Srillig	sink_color(c << c);	/* expect: 241 */
441.4Srillig	sink_color(c >> c);	/* expect: 241 */
451.4Srillig
461.4Srillig	sink_bool(c < c);
471.4Srillig	sink_bool(c <= c);
481.4Srillig	sink_bool(c > c);
491.4Srillig	sink_bool(c >= c);
501.4Srillig	sink_bool(c == c);
511.4Srillig	sink_bool(c != c);
521.4Srillig
531.4Srillig	sink_color(c & c);	/* expect: 241 */
541.4Srillig	sink_color(c ^ c);	/* expect: 241 */
551.4Srillig	sink_color(c | c);	/* expect: 241 */
561.4Srillig
571.4Srillig	sink_bool(c && c);	/* expect: 241 */
581.4Srillig	sink_bool(c || c);	/* expect: 241 */
591.4Srillig	sink_color(c ? c : BLUE);
601.3Srillig
611.3Srillig	c = GREEN;
621.4Srillig	c *= c;			/* expect: 241 */
631.4Srillig	c /= c;			/* expect: 241 */
641.4Srillig	c %= c;			/* expect: 241 */
651.4Srillig	c += c;			/* expect: 241 */
661.4Srillig	c -= c;			/* expect: 241 */
671.4Srillig	c <<= c;		/* expect: 241 */
681.4Srillig	c >>= c;		/* expect: 241 */
691.4Srillig	c &= c;			/* expect: 241 */
701.4Srillig	c ^= c;			/* expect: 241 */
711.4Srillig	c |= c;			/* expect: 241 */
721.3Srillig
731.3Srillig	/* The cast to unsigned is required by GCC at WARNS=6. */
741.4Srillig	c &= ~(unsigned)GREEN;	/* expect: 241 */
751.3Srillig}
76