xref: /netbsd-src/tests/usr.bin/indent/lsym_question.c (revision 09166ed3acabe3c9e0bd4f0903954ef3404f9571)
1 /* $NetBSD: lsym_question.c,v 1.5 2023/05/15 10:13:40 rillig Exp $ */
2 
3 /*
4  * Tests for the token lsym_question, which represents the '?' in a '?:'
5  * conditional expression.
6  */
7 
8 //indent input
9 const char *result = cond ? "then" : "else";
10 
11 const char *multi = cond1 ? "cond1" : cond2 ? "cond2" : cond3 ? "cond3" : "";
12 //indent end
13 
14 //indent run-equals-input -di0
15 
16 
17 /*
18  * To make them easier to read, conditional expressions can be split into
19  * multiple lines.
20  */
21 //indent input
22 const char *separate_lines = cond
23 	? "then"
24 	: "else";
25 //indent end
26 
27 //indent run -di0
28 const char *separate_lines = cond
29 // $ XXX: Continuation lines in expressions should be indented, even in column 1.
30 ? "then"
31 : "else";
32 //indent end
33 
34 
35 /*
36  * In functions, conditional expressions are indented as intended.
37  */
38 //indent input
39 void
function(void)40 function(void)
41 {
42 	return cond
43 		? "then"
44 		: "else";
45 }
46 //indent end
47 
48 //indent run-equals-input
49 
50 
51 /*
52  * In functions, conditional expressions are indented as intended.
53  */
54 //indent input
55 void
function(void)56 function(void)
57 {
58 	const char *branch = cond
59 		? "then"
60 		: "else";
61 
62 	const char *multiple_branches = cond1
63 		? "then 1"
64 		: cond2
65 		? "then 2"
66 		: "else";
67 
68 	const char *condensed = cond1 ? "condensed 1"
69 		: cond2 ? "condensed 2"
70 		: "condensed else";
71 }
72 //indent end
73 
74 //indent run-equals-input -di0
75