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