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