Home | History | Annotate | Line # | Download | only in lint1
msg_193.c revision 1.5
      1 /*	$NetBSD: msg_193.c,v 1.5 2021/03/21 15:24:56 rillig Exp $	*/
      2 # 3 "msg_193.c"
      3 
      4 // Test for message: statement not reached [193]
      5 
      6 /*
      7  * Test the reachability of statements in a function.
      8  *
      9  *	if
     10  *	if-else
     11  *	if-else-if-else
     12  *	for
     13  *	while
     14  *	do-while
     15  *	switch
     16  *	break
     17  *	continue
     18  *	goto
     19  *	return
     20  *
     21  *	constant expression
     22  *	system-dependent constant expression
     23  */
     24 
     25 extern void
     26 reachable(void);
     27 extern void
     28 unreachable(void);
     29 
     30 void
     31 test_statement(void)
     32 {
     33 	reachable();
     34 	reachable();
     35 }
     36 
     37 void
     38 test_compound_statement(void)
     39 {
     40 	reachable();
     41 	{
     42 		reachable();
     43 		reachable();
     44 	}
     45 	reachable();
     46 }
     47 
     48 void
     49 test_if_statement(void)
     50 {
     51 	if (1)
     52 		reachable();
     53 	reachable();
     54 	if (0)
     55 		unreachable();		/* expect: 193 */
     56 	reachable();
     57 }
     58 
     59 void
     60 test_if_compound_statement(void)
     61 {
     62 	if (1) {
     63 		reachable();
     64 	}
     65 	if (1) {
     66 		{
     67 			{
     68 				reachable();
     69 			}
     70 		}
     71 	}
     72 
     73 	if (0) {
     74 		unreachable();		/* expect: 193 */
     75 	}
     76 	if (0) {
     77 		{
     78 			{
     79 				unreachable();	/* expect: 193 */
     80 			}
     81 		}
     82 	}
     83 }
     84 
     85 void
     86 test_if_without_else(void)
     87 {
     88 	if (1)
     89 		reachable();
     90 	reachable();
     91 
     92 	if (0)
     93 		unreachable();		/* expect: 193 */
     94 	reachable();
     95 }
     96 
     97 void
     98 test_if_with_else(void)
     99 {
    100 	if (1)
    101 		reachable();
    102 	else
    103 		unreachable();		/* expect: 193 */
    104 	reachable();
    105 
    106 	if (0)
    107 		unreachable();		/* expect: 193 */
    108 	else
    109 		reachable();
    110 	reachable();
    111 }
    112 
    113 void
    114 test_if_else_if_else(void)
    115 {
    116 	if (1)
    117 		reachable();
    118 	else if (1)			/* expect: 193 */
    119 		unreachable();
    120 	else
    121 		unreachable();		/* expect: 193 */
    122 
    123 	if (0)
    124 		unreachable();		/* expect: 193 */
    125 	else if (1)
    126 		reachable();
    127 	else
    128 		unreachable();		/* expect: 193 */
    129 
    130 	if (0)
    131 		unreachable();		/* expect: 193 */
    132 	else if (0)
    133 		unreachable();		/* expect: 193 */
    134 	else
    135 		reachable();
    136 }
    137 
    138 void
    139 test_if_return(void)
    140 {
    141 	if (1)
    142 		return;
    143 	unreachable();			/* expect: 193 */
    144 }
    145 
    146 void
    147 test_if_else_return(void)
    148 {
    149 	if (1)
    150 		reachable();
    151 	else
    152 		return;			/* expect: 193 */
    153 	reachable();
    154 }
    155 
    156 void
    157 test_for_forever(void)
    158 {
    159 	for (;;)
    160 		reachable();
    161 	unreachable();			/* expect: 193 */
    162 }
    163 
    164 void
    165 test_for_true(void)
    166 {
    167 	for (; 1;)
    168 		reachable();
    169 	unreachable();			/* expect: 193 */
    170 }
    171 
    172 void
    173 test_for_false(void)
    174 {
    175 	for (; 0;)
    176 		unreachable();		/* TODO: expect: 193 */
    177 	reachable();
    178 }
    179 
    180 void
    181 test_for_break(void)
    182 {
    183 	for (;;) {
    184 		reachable();
    185 		break;
    186 		unreachable();		/* expect: 193 */
    187 	}
    188 	reachable();
    189 }
    190 
    191 void
    192 test_for_if_break(void)
    193 {
    194 	for (;;) {
    195 		reachable();
    196 		if (0) {
    197 			unreachable();	/* expect: 193 */
    198 			break;
    199 			unreachable();	/* expect: 193 */
    200 		}
    201 		if (1) {
    202 			reachable();
    203 			break;
    204 			unreachable();	/* expect: 193 */
    205 		}
    206 		unreachable();		/* TODO: expect: 193 */
    207 	}
    208 	reachable();
    209 }
    210 
    211 void
    212 test_for_continue(void)
    213 {
    214 	for (;;) {
    215 		reachable();
    216 		continue;
    217 		unreachable();		/* expect: 193 */
    218 	}
    219 	unreachable();			/* expect: 193 */
    220 }
    221 
    222 void
    223 test_for_if_continue(void)
    224 {
    225 	for (;;) {
    226 		reachable();
    227 		if (0) {
    228 			unreachable();	/* expect: 193 */
    229 			continue;
    230 			unreachable();	/* expect: 193 */
    231 		}
    232 		if (1) {
    233 			reachable();
    234 			continue;
    235 			unreachable();	/* expect: 193 */
    236 		}
    237 		unreachable();		/* TODO: expect: 193 */
    238 	}
    239 	unreachable();			/* expect: 193 */
    240 }
    241 
    242 void
    243 test_for_return(void)
    244 {
    245 	for (;;) {
    246 		reachable();
    247 		return;
    248 		unreachable();		/* expect: 193 */
    249 	}
    250 	unreachable();			/* expect: 193 */
    251 }
    252 
    253 void
    254 test_for_if_return(void)
    255 {
    256 	for (;;) {
    257 		reachable();
    258 		if (0) {
    259 			unreachable();	/* expect: 193 */
    260 			return;
    261 			unreachable();	/* expect: 193 */
    262 		}
    263 		if (1) {
    264 			reachable();
    265 			return;
    266 			unreachable();	/* expect: 193 */
    267 		}
    268 		unreachable();		/* TODO: expect: 193 */
    269 	}
    270 	unreachable();			/* expect: 193 */
    271 }
    272 
    273 void
    274 test_while_true(void)
    275 {
    276 	while (1)
    277 		reachable();
    278 	unreachable();			/* expect: 193 */
    279 }
    280 
    281 void
    282 test_while_false(void)
    283 {
    284 	while (0)
    285 		unreachable();		/* TODO: expect: 193 */
    286 	reachable();
    287 }
    288 
    289 void
    290 test_while_break(void)
    291 {
    292 	while (1) {
    293 		reachable();
    294 		break;
    295 		unreachable();		/* expect: 193 */
    296 	}
    297 	reachable();
    298 }
    299 
    300 void
    301 test_while_if_break(void)
    302 {
    303 	while (1) {
    304 		reachable();
    305 		if (0) {
    306 			unreachable();	/* expect: 193 */
    307 			break;
    308 			unreachable();	/* expect: 193 */
    309 		}
    310 		if (1) {
    311 			reachable();
    312 			break;
    313 			unreachable();	/* expect: 193 */
    314 		}
    315 		unreachable();		/* TODO: expect: 193 */
    316 	}
    317 	reachable();
    318 }
    319 
    320 void
    321 test_while_continue(void)
    322 {
    323 	while (1) {
    324 		reachable();
    325 		continue;
    326 		unreachable();		/* expect: 193 */
    327 	}
    328 	unreachable();			/* expect: 193 */
    329 }
    330 
    331 void
    332 test_while_if_continue(void)
    333 {
    334 	while (1) {
    335 		reachable();
    336 		if (0) {
    337 			unreachable();	/* expect: 193 */
    338 			continue;
    339 			unreachable();	/* expect: 193 */
    340 		}
    341 		if (1) {
    342 			reachable();
    343 			continue;
    344 			unreachable();	/* expect: 193 */
    345 		}
    346 		unreachable();		/* TODO: expect: 193 */
    347 	}
    348 	unreachable();			/* expect: 193 */
    349 }
    350 
    351 void
    352 test_while_return(void)
    353 {
    354 	while (1) {
    355 		reachable();
    356 		return;
    357 		unreachable();		/* expect: 193 */
    358 	}
    359 	unreachable();			/* expect: 193 */
    360 }
    361 
    362 void
    363 test_while_if_return(void)
    364 {
    365 	while (1) {
    366 		reachable();
    367 		if (0) {
    368 			unreachable();	/* expect: 193 */
    369 			return;
    370 			unreachable();	/* expect: 193 */
    371 		}
    372 		if (1) {
    373 			reachable();
    374 			return;
    375 			unreachable();	/* expect: 193 */
    376 		}
    377 		unreachable();		/* TODO: expect: 193 */
    378 	}
    379 	unreachable();			/* expect: 193 */
    380 }
    381 
    382 void
    383 test_do_while_true(void)
    384 {
    385 	do {
    386 		reachable();
    387 	} while (1);
    388 	unreachable();			/* expect: 193 */
    389 }
    390 
    391 void
    392 test_do_while_false(void)
    393 {
    394 	do {
    395 		reachable();
    396 	} while (0);
    397 	reachable();
    398 }
    399 
    400 void
    401 test_do_while_break(void)
    402 {
    403 	do {
    404 		reachable();
    405 		break;
    406 		unreachable();		/* expect: 193 */
    407 	} while (1);
    408 	reachable();
    409 }
    410 
    411 void
    412 test_do_while_if_break(void)
    413 {
    414 	do {
    415 		reachable();
    416 		if (0) {
    417 			unreachable();	/* expect: 193 */
    418 			break;
    419 			unreachable();	/* expect: 193 */
    420 		}
    421 		if (1) {
    422 			reachable();
    423 			break;
    424 			unreachable();	/* expect: 193 */
    425 		}
    426 		unreachable();		/* TODO: expect: 193 */
    427 	} while (1);
    428 	reachable();
    429 }
    430 
    431 void
    432 test_do_while_continue(void)
    433 {
    434 	do {
    435 		reachable();
    436 		continue;
    437 		unreachable();		/* expect: 193 */
    438 	} while (1);
    439 	unreachable();			/* expect: 193 */
    440 }
    441 
    442 void
    443 test_do_while_if_continue(void)
    444 {
    445 	do {
    446 		reachable();
    447 		if (0) {
    448 			unreachable();	/* expect: 193 */
    449 			continue;
    450 			unreachable();	/* expect: 193 */
    451 		}
    452 		if (1) {
    453 			reachable();
    454 			continue;
    455 			unreachable();	/* expect: 193 */
    456 		}
    457 		unreachable();		/* TODO: expect: 193 */
    458 	} while (1);
    459 	unreachable();			/* expect: 193 */
    460 }
    461 
    462 void
    463 test_do_while_return(void)
    464 {
    465 	do {
    466 		reachable();
    467 		return;
    468 		unreachable();		/* expect: 193 */
    469 	} while (1);
    470 	unreachable();			/* expect: 193 */
    471 }
    472 
    473 void
    474 test_do_while_if_return(void)
    475 {
    476 	do {
    477 		reachable();
    478 		if (0) {
    479 			unreachable();	/* expect: 193 */
    480 			return;
    481 			unreachable();	/* expect: 193 */
    482 		}
    483 		if (1) {
    484 			reachable();
    485 			return;
    486 			unreachable();	/* expect: 193 */
    487 		}
    488 		unreachable();		/* TODO: expect: 193 */
    489 	} while (1);
    490 	unreachable();			/* expect: 193 */
    491 }
    492 
    493 /* TODO: switch */
    494 
    495 /* TODO: goto */
    496 
    497 /* TODO: system-dependent constant expression (see tn_system_dependent) */
    498