1*b2baa501Srillig /* $NetBSD: stmt_if.c,v 1.3 2023/03/28 14:44:35 rillig Exp $ */ 2c35341a5Srillig # 3 "stmt_if.c" 3c35341a5Srillig 4c35341a5Srillig /* 5c35341a5Srillig * Test parsing of 'if' statements. 6c35341a5Srillig */ 7c35341a5Srillig 8*b2baa501Srillig /* lint1-extra-flags: -X 351 */ 9*b2baa501Srillig 10c35341a5Srillig void println(const char *); 11c35341a5Srillig 12c35341a5Srillig void dangling_else(int x)13c35341a5Srilligdangling_else(int x) 14c35341a5Srillig { 15c35341a5Srillig if (x > 0) 16c35341a5Srillig if (x > 10) 17c35341a5Srillig println("> 10"); 18c35341a5Srillig /* This 'else' is bound to the closest unfinished 'if'. */ 19c35341a5Srillig else 20c35341a5Srillig println("> 0"); 21c35341a5Srillig /* 22c35341a5Srillig * If the above 'else' were bound to the other 'if', the next 'else' 23c35341a5Srillig * would have no corresponding 'if', resulting in a syntax error. 24c35341a5Srillig */ 25c35341a5Srillig else 26c35341a5Srillig println("not positive"); 27c83f7defSrillig /* expect+1: error: syntax error 'else' [249] */ 28c35341a5Srillig else 29c35341a5Srillig println("syntax error"); 30c35341a5Srillig } 31