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