opt_ci.c revision 1.5 1 1.5 rillig /* $NetBSD: opt_ci.c,v 1.5 2021/11/20 16:54:17 rillig Exp $ */
2 1.1 rillig /* $FreeBSD$ */
3 1.1 rillig
4 1.2 rillig /*
5 1.2 rillig * Tests for the option '-ci', which controls the indentation of continuation
6 1.2 rillig * lines in statements and declarations, but only inside a function.
7 1.2 rillig */
8 1.2 rillig
9 1.2 rillig /*
10 1.2 rillig * Top level expressions with and without parentheses.
11 1.2 rillig */
12 1.2 rillig #indent input
13 1.2 rillig int top_level = 1 +
14 1.2 rillig 2;
15 1.2 rillig int top_level = (1 +
16 1.2 rillig 2 + (
17 1.2 rillig 3));
18 1.2 rillig #indent end
19 1.2 rillig
20 1.2 rillig #indent run -ci0
21 1.2 rillig int top_level = 1 +
22 1.2 rillig 2;
23 1.2 rillig int top_level = (1 +
24 1.2 rillig 2 + (
25 1.2 rillig 3));
26 1.2 rillig #indent end
27 1.2 rillig #indent run-equals-prev-output -ci2
28 1.2 rillig #indent run-equals-prev-output -ci4
29 1.2 rillig #indent run-equals-prev-output -ci8
30 1.2 rillig
31 1.2 rillig #indent run -ci0 -nlp
32 1.2 rillig int top_level = 1 +
33 1.2 rillig 2;
34 1.2 rillig int top_level = (1 +
35 1.2 rillig 2 + (
36 1.2 rillig 3));
37 1.2 rillig #indent end
38 1.2 rillig
39 1.2 rillig #indent run -ci2 -nlp
40 1.2 rillig int top_level = 1 +
41 1.2 rillig 2;
42 1.2 rillig int top_level = (1 +
43 1.2 rillig 2 + (
44 1.2 rillig 3));
45 1.2 rillig #indent end
46 1.2 rillig
47 1.2 rillig /*
48 1.2 rillig * Since '-ci4' is half an indentation level, indent all continuations using
49 1.2 rillig * the same level, no matter how many parentheses there are. The rationale for
50 1.2 rillig * this may have been to prevent that the continuation line has the same
51 1.2 rillig * indentation as a follow-up statement, such as in 'if' statements.
52 1.2 rillig */
53 1.2 rillig #indent run -ci4 -nlp
54 1.2 rillig int top_level = 1 +
55 1.2 rillig 2;
56 1.2 rillig int top_level = (1 +
57 1.2 rillig 2 + (
58 1.2 rillig 3));
59 1.2 rillig #indent end
60 1.2 rillig
61 1.4 rillig
62 1.2 rillig /*
63 1.2 rillig * Declarations in functions without parentheses.
64 1.2 rillig */
65 1.1 rillig #indent input
66 1.1 rillig int
67 1.1 rillig sum(int a, int b)
68 1.1 rillig {
69 1.1 rillig return a +
70 1.2 rillig b;
71 1.2 rillig return first +
72 1.2 rillig second;
73 1.2 rillig }
74 1.2 rillig #indent end
75 1.2 rillig
76 1.2 rillig #indent run -ci0
77 1.2 rillig int
78 1.2 rillig sum(int a, int b)
79 1.2 rillig {
80 1.2 rillig return a +
81 1.2 rillig b;
82 1.2 rillig return first +
83 1.2 rillig second;
84 1.1 rillig }
85 1.1 rillig #indent end
86 1.1 rillig
87 1.1 rillig #indent run -ci2
88 1.1 rillig int
89 1.1 rillig sum(int a, int b)
90 1.1 rillig {
91 1.1 rillig return a +
92 1.1 rillig b;
93 1.2 rillig return first +
94 1.2 rillig second;
95 1.2 rillig }
96 1.2 rillig #indent end
97 1.2 rillig
98 1.2 rillig #indent run -ci4
99 1.2 rillig int
100 1.2 rillig sum(int a, int b)
101 1.2 rillig {
102 1.2 rillig return a +
103 1.2 rillig b;
104 1.2 rillig return first +
105 1.2 rillig second;
106 1.2 rillig }
107 1.2 rillig #indent end
108 1.2 rillig
109 1.2 rillig #indent run -ci8
110 1.2 rillig int
111 1.2 rillig sum(int a, int b)
112 1.2 rillig {
113 1.2 rillig return a +
114 1.2 rillig b;
115 1.2 rillig return first +
116 1.2 rillig second;
117 1.2 rillig }
118 1.2 rillig #indent end
119 1.2 rillig
120 1.2 rillig
121 1.2 rillig /*
122 1.2 rillig * Continued statements with expressions in parentheses.
123 1.2 rillig */
124 1.2 rillig #indent input
125 1.2 rillig int
126 1.2 rillig sum(int a, int b)
127 1.2 rillig {
128 1.2 rillig return (a +
129 1.2 rillig b);
130 1.2 rillig return (first +
131 1.2 rillig second + (
132 1.2 rillig third));
133 1.2 rillig }
134 1.2 rillig #indent end
135 1.2 rillig
136 1.2 rillig #indent run -ci0
137 1.2 rillig int
138 1.2 rillig sum(int a, int b)
139 1.2 rillig {
140 1.3 rillig return (a +
141 1.3 rillig b);
142 1.3 rillig return (first +
143 1.3 rillig second + (
144 1.3 rillig third));
145 1.2 rillig }
146 1.2 rillig #indent end
147 1.2 rillig #indent run-equals-prev-output -ci2
148 1.2 rillig #indent run-equals-prev-output -ci4
149 1.2 rillig #indent run-equals-prev-output -ci8
150 1.2 rillig
151 1.2 rillig #indent run -ci2 -nlp
152 1.2 rillig int
153 1.2 rillig sum(int a, int b)
154 1.2 rillig {
155 1.3 rillig return (a +
156 1.2 rillig b);
157 1.3 rillig return (first +
158 1.2 rillig second + (
159 1.2 rillig third));
160 1.2 rillig }
161 1.2 rillig #indent end
162 1.2 rillig
163 1.2 rillig /*
164 1.2 rillig * Since '-ci4' is half an indentation level, indent all continuations using
165 1.2 rillig * the same level, no matter how many parentheses there are. The rationale for
166 1.2 rillig * this may have been to prevent that the continuation line has the same
167 1.2 rillig * indentation as a follow-up statement, such as in 'if' statements.
168 1.2 rillig */
169 1.2 rillig #indent run -ci4 -nlp
170 1.2 rillig int
171 1.2 rillig sum(int a, int b)
172 1.2 rillig {
173 1.3 rillig return (a +
174 1.2 rillig b);
175 1.3 rillig return (first +
176 1.2 rillig second + (
177 1.2 rillig third));
178 1.2 rillig }
179 1.2 rillig #indent end
180 1.2 rillig
181 1.2 rillig #indent run -ci8 -nlp
182 1.2 rillig int
183 1.2 rillig sum(int a, int b)
184 1.2 rillig {
185 1.3 rillig return (a +
186 1.2 rillig b);
187 1.3 rillig return (first +
188 1.2 rillig second + (
189 1.2 rillig third));
190 1.1 rillig }
191 1.1 rillig #indent end
192 1.5 rillig
193 1.5 rillig
194 1.5 rillig /*
195 1.5 rillig * In the default configuration, the indentation level from '-i' is the same
196 1.5 rillig * as the continuation indentation from '-ci'. The difference between these
197 1.5 rillig * becomes visible for structural macros like 'forever' or 'foreach'.
198 1.5 rillig */
199 1.5 rillig #indent input
200 1.5 rillig #define forever for (;;)
201 1.5 rillig void
202 1.5 rillig function(void)
203 1.5 rillig {
204 1.5 rillig forever
205 1.5 rillig stmt();
206 1.5 rillig
207 1.5 rillig forever {
208 1.5 rillig stmt();
209 1.5 rillig }
210 1.5 rillig }
211 1.5 rillig #indent end
212 1.5 rillig
213 1.5 rillig #indent run-equals-input
214 1.5 rillig
215 1.5 rillig /*
216 1.5 rillig * The difference between the block indentation and the continuation
217 1.5 rillig * indentation only becomes visible when these two differ.
218 1.5 rillig */
219 1.5 rillig #indent run -i8 -ci4
220 1.5 rillig #define forever for (;;)
221 1.5 rillig void
222 1.5 rillig function(void)
223 1.5 rillig {
224 1.5 rillig forever
225 1.5 rillig stmt();
226 1.5 rillig
227 1.5 rillig forever {
228 1.5 rillig stmt();
229 1.5 rillig }
230 1.5 rillig }
231 1.5 rillig #indent end
232