xref: /netbsd-src/tests/usr.bin/xlint/lint1/msg_206.c (revision e6298b924c5ba98f3a22919b56dab04a87cdbb1c)
1*e6298b92Srillig /*	$NetBSD: msg_206.c,v 1.7 2023/07/07 19:45:22 rillig Exp $	*/
2a0a15c14Srillig # 3 "msg_206.c"
3a0a15c14Srillig 
4a0a15c14Srillig // Test for message: enumeration value(s) not handled in switch [206]
5a0a15c14Srillig 
6*e6298b92Srillig /* lint1-extra-flags: -eh -X 351 */
7a94824d3Srillig 
8a94824d3Srillig enum number {
9a94824d3Srillig 	ONE, TWO, THREE
10a94824d3Srillig };
11a94824d3Srillig 
12a94824d3Srillig void
test(enum number num)13a94824d3Srillig test(enum number num)
14a94824d3Srillig {
15a94824d3Srillig 	switch (num) {
16a94824d3Srillig 	case ONE:
17a94824d3Srillig 	case TWO:
18a94824d3Srillig 		break;
19a94824d3Srillig 	}
20a94824d3Srillig 	/* expect-1: warning: enumeration value(s) not handled in switch [206] */
21a94824d3Srillig 
22a94824d3Srillig 	switch (num) {
23a94824d3Srillig 	case ONE:
24a94824d3Srillig 	case TWO:
25a94824d3Srillig 	case THREE:
26a94824d3Srillig 		break;
27a94824d3Srillig 	}
28a94824d3Srillig }
29cfd4dc4fSrillig 
30cfd4dc4fSrillig int
too_many(enum number num)31cfd4dc4fSrillig too_many(enum number num)
32cfd4dc4fSrillig {
33cfd4dc4fSrillig 	switch (num) {
34cfd4dc4fSrillig 	case ONE:
35cfd4dc4fSrillig 		return 1;
36cfd4dc4fSrillig 	case TWO:
37cfd4dc4fSrillig 		return 2;
38cfd4dc4fSrillig 	case THREE:
39cfd4dc4fSrillig 		return 3;
40cfd4dc4fSrillig 	case 3:
41cfd4dc4fSrillig 		return -1;
42cfd4dc4fSrillig 	}
438b7380c1Srillig 	/*
448b7380c1Srillig 	 * Before func.c 1.137 from 2022-05-22, lint complained that there
458b7380c1Srillig 	 * were enum constants not handled in switch, even though all of them
468b7380c1Srillig 	 * are handled.  The code smell in this case is that there are _too
478b7380c1Srillig 	 * many_ branches that cover "impossible" values.
488b7380c1Srillig 	 */
49cfd4dc4fSrillig 	return 3;
50cfd4dc4fSrillig }
51