1*ea649623Srillig /* $NetBSD: stmt_if.c,v 1.3 2023/03/28 14:44:35 rillig Exp $ */ 27f77ac51Srillig # 3 "stmt_if.c" 37f77ac51Srillig 47f77ac51Srillig /* 57f77ac51Srillig * Test parsing of 'if' statements. 67f77ac51Srillig */ 77f77ac51Srillig 8*ea649623Srillig /* lint1-extra-flags: -X 351 */ 9*ea649623Srillig 107f77ac51Srillig void println(const char *); 117f77ac51Srillig 127f77ac51Srillig void dangling_else(int x)137f77ac51Srilligdangling_else(int x) 147f77ac51Srillig { 157f77ac51Srillig if (x > 0) 167f77ac51Srillig if (x > 10) 177f77ac51Srillig println("> 10"); 187f77ac51Srillig /* This 'else' is bound to the closest unfinished 'if'. */ 197f77ac51Srillig else 207f77ac51Srillig println("> 0"); 217f77ac51Srillig /* 227f77ac51Srillig * If the above 'else' were bound to the other 'if', the next 'else' 237f77ac51Srillig * would have no corresponding 'if', resulting in a syntax error. 247f77ac51Srillig */ 257f77ac51Srillig else 267f77ac51Srillig println("not positive"); 2753ed6e86Srillig /* expect+1: error: syntax error 'else' [249] */ 287f77ac51Srillig else 297f77ac51Srillig println("syntax error"); 307f77ac51Srillig } 31