xref: /netbsd-src/tests/usr.bin/indent/lsym_question.c (revision 09166ed3acabe3c9e0bd4f0903954ef3404f9571)
1*09166ed3Srillig /* $NetBSD: lsym_question.c,v 1.5 2023/05/15 10:13:40 rillig Exp $ */
29ae26de1Srillig 
39ae26de1Srillig /*
49ae26de1Srillig  * Tests for the token lsym_question, which represents the '?' in a '?:'
59ae26de1Srillig  * conditional expression.
69ae26de1Srillig  */
79ae26de1Srillig 
847306038Srillig //indent input
9d15bc7b9Srillig const char *result = cond ? "then" : "else";
10d15bc7b9Srillig 
11d15bc7b9Srillig const char *multi = cond1 ? "cond1" : cond2 ? "cond2" : cond3 ? "cond3" : "";
1247306038Srillig //indent end
13d15bc7b9Srillig 
1447306038Srillig //indent run-equals-input -di0
15d15bc7b9Srillig 
16d15bc7b9Srillig 
17d15bc7b9Srillig /*
18d15bc7b9Srillig  * To make them easier to read, conditional expressions can be split into
19d15bc7b9Srillig  * multiple lines.
20d15bc7b9Srillig  */
2147306038Srillig //indent input
22d15bc7b9Srillig const char *separate_lines = cond
23d15bc7b9Srillig 	? "then"
24d15bc7b9Srillig 	: "else";
2547306038Srillig //indent end
26d15bc7b9Srillig 
2747306038Srillig //indent run -di0
28d15bc7b9Srillig const char *separate_lines = cond
29d15bc7b9Srillig // $ XXX: Continuation lines in expressions should be indented, even in column 1.
30d15bc7b9Srillig ? "then"
31d15bc7b9Srillig : "else";
3247306038Srillig //indent end
33d15bc7b9Srillig 
34d15bc7b9Srillig 
35d15bc7b9Srillig /*
36d15bc7b9Srillig  * In functions, conditional expressions are indented as intended.
37d15bc7b9Srillig  */
3847306038Srillig //indent input
39d15bc7b9Srillig void
function(void)40d15bc7b9Srillig function(void)
41d15bc7b9Srillig {
42d15bc7b9Srillig 	return cond
43d15bc7b9Srillig 		? "then"
44d15bc7b9Srillig 		: "else";
45d15bc7b9Srillig }
4647306038Srillig //indent end
479ae26de1Srillig 
4847306038Srillig //indent run-equals-input
49d15bc7b9Srillig 
50d15bc7b9Srillig 
51d15bc7b9Srillig /*
52d15bc7b9Srillig  * In functions, conditional expressions are indented as intended.
53d15bc7b9Srillig  */
5447306038Srillig //indent input
55d15bc7b9Srillig void
function(void)56d15bc7b9Srillig function(void)
57d15bc7b9Srillig {
58d15bc7b9Srillig 	const char *branch = cond
59d15bc7b9Srillig 		? "then"
60d15bc7b9Srillig 		: "else";
61*09166ed3Srillig 
62*09166ed3Srillig 	const char *multiple_branches = cond1
63*09166ed3Srillig 		? "then 1"
64*09166ed3Srillig 		: cond2
65*09166ed3Srillig 		? "then 2"
66*09166ed3Srillig 		: "else";
67*09166ed3Srillig 
68*09166ed3Srillig 	const char *condensed = cond1 ? "condensed 1"
69*09166ed3Srillig 		: cond2 ? "condensed 2"
70*09166ed3Srillig 		: "condensed else";
71d15bc7b9Srillig }
7247306038Srillig //indent end
73d15bc7b9Srillig 
7447306038Srillig //indent run-equals-input -di0
75