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)13a94824d3Srilligtest(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)31cfd4dc4fSrilligtoo_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