1 1.7 rillig /* $NetBSD: msg_220.c,v 1.7 2021/08/29 09:29:32 rillig Exp $ */ 2 1.1 rillig # 3 "msg_220.c" 3 1.1 rillig 4 1.1 rillig // Test for message: fallthrough on case statement [220] 5 1.1 rillig 6 1.2 rillig /* lint1-extra-flags: -h */ 7 1.2 rillig 8 1.2 rillig extern void 9 1.2 rillig println(const char *); 10 1.2 rillig 11 1.2 rillig void 12 1.2 rillig example(int n) 13 1.2 rillig { 14 1.2 rillig switch (n) { 15 1.2 rillig case 1: 16 1.2 rillig case 3: 17 1.2 rillig case 5: 18 1.2 rillig println("odd"); 19 1.2 rillig case 2: /* expect: 220 */ 20 1.2 rillig case 7: 21 1.2 rillig println("prime"); 22 1.2 rillig default: /* expect: 284 */ 23 1.2 rillig println("number"); 24 1.2 rillig } 25 1.2 rillig } 26 1.3 christos 27 1.3 christos void 28 1.3 christos example1(int n) 29 1.3 christos { 30 1.3 christos switch (n) { 31 1.3 christos case 1: 32 1.3 christos case 3: 33 1.3 christos case 5: 34 1.3 christos println("odd"); 35 1.3 christos __attribute__((__fallthrough__)); 36 1.3 christos case 2: 37 1.3 christos case 7: 38 1.3 christos println("prime"); 39 1.3 christos __attribute__((__fallthrough__)); 40 1.3 christos default: 41 1.3 christos println("number"); 42 1.3 christos } 43 1.3 christos } 44 1.4 rillig 45 1.4 rillig /* https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-fallthrough */ 46 1.4 rillig void 47 1.4 rillig annotation_comment_variations(int n) 48 1.4 rillig { 49 1.4 rillig switch (n) { 50 1.4 rillig case 0: 51 1.4 rillig println("0"); 52 1.4 rillig /* FALLTHROUGH */ 53 1.4 rillig case 1: 54 1.4 rillig println("1"); 55 1.7 rillig /* Seen in libarchive/archive_string.c, macro WRITE_UC. */ 56 1.4 rillig /* FALL THROUGH */ 57 1.7 rillig /* Lint warned before lex.c 1.79 from 2021-08-29. */ 58 1.4 rillig case 2: 59 1.4 rillig println("2"); 60 1.4 rillig /* FALLS THROUGH */ 61 1.4 rillig /* expect+1: warning: fallthrough on case statement [220] */ 62 1.4 rillig case 3: 63 1.4 rillig println("3"); 64 1.4 rillig /* intentionally falls through */ 65 1.4 rillig /* expect+1: warning: fallthrough on case statement [220] */ 66 1.4 rillig case 4: 67 1.4 rillig println("4"); 68 1.7 rillig /* This is the Splint variant, which is seldom used. */ 69 1.4 rillig /* @fallthrough@ */ 70 1.4 rillig /* expect+1: warning: fallthrough on case statement [220] */ 71 1.4 rillig case 5: 72 1.4 rillig println("5"); 73 1.7 rillig /* Seen in unbound/lookup3.c, function hashlittle. */ 74 1.7 rillig /* Lint warned before lex.c 1.80 from 2021-08-29. */ 75 1.6 rillig /* fallthrough */ 76 1.6 rillig case 6: 77 1.6 rillig println("6"); 78 1.4 rillig } 79 1.4 rillig } 80