Home | History | Annotate | Line # | Download | only in lint1
msg_220.c revision 1.6
      1  1.6    rillig /*	$NetBSD: msg_220.c,v 1.6 2021/08/29 09:09:53 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.4    rillig 		/* FALL THROUGH */
     56  1.5    rillig 		/* Lint warned before 2021-08-29. */
     57  1.4    rillig 	case 2:
     58  1.4    rillig 		println("2");
     59  1.4    rillig 		/* FALLS THROUGH */
     60  1.4    rillig 		/* expect+1: warning: fallthrough on case statement [220] */
     61  1.4    rillig 	case 3:
     62  1.4    rillig 		println("3");
     63  1.4    rillig 		/* intentionally falls through */
     64  1.4    rillig 		/* expect+1: warning: fallthrough on case statement [220] */
     65  1.4    rillig 	case 4:
     66  1.4    rillig 		println("4");
     67  1.4    rillig 		/* @fallthrough@ */
     68  1.4    rillig 		/* expect+1: warning: fallthrough on case statement [220] */
     69  1.4    rillig 	case 5:
     70  1.4    rillig 		println("5");
     71  1.6    rillig 		/* fallthrough */
     72  1.6    rillig 		/* expect+1: warning: fallthrough on case statement [220] */
     73  1.6    rillig 	case 6:
     74  1.6    rillig 		println("6");
     75  1.4    rillig 	}
     76  1.4    rillig }
     77