msg_206.c revision 1.7
11.7Srillig/*	$NetBSD: msg_206.c,v 1.7 2023/07/07 19:45:22 rillig Exp $	*/
21.1Srillig# 3 "msg_206.c"
31.1Srillig
41.1Srillig// Test for message: enumeration value(s) not handled in switch [206]
51.1Srillig
61.7Srillig/* lint1-extra-flags: -eh -X 351 */
71.3Srillig
81.3Srilligenum number {
91.3Srillig	ONE, TWO, THREE
101.3Srillig};
111.3Srillig
121.3Srilligvoid
131.3Srilligtest(enum number num)
141.3Srillig{
151.3Srillig	switch (num) {
161.3Srillig	case ONE:
171.3Srillig	case TWO:
181.3Srillig		break;
191.3Srillig	}
201.3Srillig	/* expect-1: warning: enumeration value(s) not handled in switch [206] */
211.3Srillig
221.3Srillig	switch (num) {
231.3Srillig	case ONE:
241.3Srillig	case TWO:
251.3Srillig	case THREE:
261.3Srillig		break;
271.3Srillig	}
281.3Srillig}
291.5Srillig
301.5Srilligint
311.5Srilligtoo_many(enum number num)
321.5Srillig{
331.5Srillig	switch (num) {
341.5Srillig	case ONE:
351.5Srillig		return 1;
361.5Srillig	case TWO:
371.5Srillig		return 2;
381.5Srillig	case THREE:
391.5Srillig		return 3;
401.5Srillig	case 3:
411.5Srillig		return -1;
421.5Srillig	}
431.6Srillig	/*
441.6Srillig	 * Before func.c 1.137 from 2022-05-22, lint complained that there
451.6Srillig	 * were enum constants not handled in switch, even though all of them
461.6Srillig	 * are handled.  The code smell in this case is that there are _too
471.6Srillig	 * many_ branches that cover "impossible" values.
481.6Srillig	 */
491.5Srillig	return 3;
501.5Srillig}
51