1 1.6 rillig /* $NetBSD: psym_switch_expr.c,v 1.6 2023/06/23 20:44:51 rillig Exp $ */ 2 1.1 rillig 3 1.1 rillig /* 4 1.1 rillig * Tests for the parser symbol psym_switch_expr, which represents the keyword 5 1.1 rillig * 'switch' followed by the controlling expression, now waiting for a 6 1.1 rillig * statement (usually a block) containing the 'case' labels. 7 1.1 rillig */ 8 1.1 rillig 9 1.4 rillig //indent run-equals-input 10 1.2 rillig 11 1.2 rillig 12 1.2 rillig /* 13 1.2 rillig * In all practical cases, a 'switch (expr)' is followed by a block, but the 14 1.2 rillig * C syntax allows an arbitrary statement. Unless such a statement has a 15 1.6 rillig * label or is a loop, its beginning is unreachable. 16 1.2 rillig */ 17 1.4 rillig //indent input 18 1.2 rillig void 19 1.2 rillig function(void) 20 1.2 rillig { 21 1.2 rillig switch (expr) 22 1.2 rillig if (cond) { 23 1.2 rillig case 1: return; 24 1.2 rillig case 2: break; 25 1.2 rillig } 26 1.2 rillig } 27 1.4 rillig //indent end 28 1.2 rillig 29 1.4 rillig //indent run 30 1.2 rillig void 31 1.2 rillig function(void) 32 1.2 rillig { 33 1.2 rillig switch (expr) 34 1.2 rillig if (cond) { 35 1.2 rillig case 1: 36 1.2 rillig return; 37 1.2 rillig case 2: 38 1.2 rillig break; 39 1.2 rillig } 40 1.2 rillig } 41 1.4 rillig //indent end 42 1.5 rillig 43 1.5 rillig //indent run -cli-0.375 44 1.5 rillig void 45 1.5 rillig function(void) 46 1.5 rillig { 47 1.5 rillig switch (expr) 48 1.5 rillig if (cond) { 49 1.5 rillig case 1: 50 1.5 rillig return; 51 1.5 rillig case 2: 52 1.5 rillig break; 53 1.5 rillig } 54 1.5 rillig } 55 1.5 rillig //indent end 56