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
18void
19function(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
30void
31function(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
44void
45function(void)
46{
47	switch (expr)
48		if (cond) {
49     case 1:
50			return;
51     case 2:
52			break;
53		}
54}
55//indent end
56