xref: /netbsd-src/tests/usr.bin/xlint/lint1/stmt_if.c (revision 7d62b00eb9ad855ffcd7da46b41e23feb5476fac)
1 /*	$NetBSD: stmt_if.c,v 1.2 2022/06/17 18:54:53 rillig Exp $	*/
2 # 3 "stmt_if.c"
3 
4 /*
5  * Test parsing of 'if' statements.
6  */
7 
8 void println(const char *);
9 
10 void
11 dangling_else(int x)
12 {
13 	if (x > 0)
14 		if (x > 10)
15 			println("> 10");
16 		/* This 'else' is bound to the closest unfinished 'if'. */
17 		else
18 			println("> 0");
19 	/*
20 	 * If the above 'else' were bound to the other 'if', the next 'else'
21 	 * would have no corresponding 'if', resulting in a syntax error.
22 	 */
23 	else
24 		println("not positive");
25 	/* expect+1: error: syntax error 'else' [249] */
26 	else
27 		println("syntax error");
28 }
29