opt_ci.c revision 1.11 1 1.11 rillig /* $NetBSD: opt_ci.c,v 1.11 2023/06/10 08:17:04 rillig Exp $ */
2 1.1 rillig
3 1.2 rillig /*
4 1.2 rillig * Tests for the option '-ci', which controls the indentation of continuation
5 1.2 rillig * lines in statements and declarations, but only inside a function.
6 1.2 rillig */
7 1.2 rillig
8 1.2 rillig /*
9 1.2 rillig * Top level expressions with and without parentheses.
10 1.2 rillig */
11 1.8 rillig //indent input
12 1.2 rillig int top_level = 1 +
13 1.2 rillig 2;
14 1.2 rillig int top_level = (1 +
15 1.2 rillig 2 + (
16 1.2 rillig 3));
17 1.8 rillig //indent end
18 1.2 rillig
19 1.8 rillig //indent run -ci0
20 1.2 rillig int top_level = 1 +
21 1.2 rillig 2;
22 1.2 rillig int top_level = (1 +
23 1.2 rillig 2 + (
24 1.2 rillig 3));
25 1.8 rillig //indent end
26 1.7 rillig
27 1.8 rillig //indent run-equals-prev-output -ci2
28 1.7 rillig
29 1.8 rillig //indent run-equals-prev-output -ci4
30 1.7 rillig
31 1.8 rillig //indent run-equals-prev-output -ci8
32 1.2 rillig
33 1.8 rillig //indent run -ci0 -nlp
34 1.2 rillig int top_level = 1 +
35 1.2 rillig 2;
36 1.2 rillig int top_level = (1 +
37 1.2 rillig 2 + (
38 1.2 rillig 3));
39 1.8 rillig //indent end
40 1.2 rillig
41 1.8 rillig //indent run -ci2 -nlp
42 1.2 rillig int top_level = 1 +
43 1.2 rillig 2;
44 1.2 rillig int top_level = (1 +
45 1.2 rillig 2 + (
46 1.2 rillig 3));
47 1.8 rillig //indent end
48 1.2 rillig
49 1.2 rillig /*
50 1.10 rillig * Between 2019-04-04 and 2023-06-09, there was a special rule that prevented
51 1.10 rillig * indentation based on the number of open parentheses, in the case that the
52 1.10 rillig * continuation indentation is half an indentation level, maybe to prevent that
53 1.10 rillig * the continuation line has the same indentation as a follow-up statement,
54 1.10 rillig * such as in 'if' statements. To prevent such ambiguities, see '-eei'.
55 1.2 rillig */
56 1.8 rillig //indent run -ci4 -nlp
57 1.2 rillig int top_level = 1 +
58 1.2 rillig 2;
59 1.2 rillig int top_level = (1 +
60 1.2 rillig 2 + (
61 1.10 rillig 3));
62 1.8 rillig //indent end
63 1.2 rillig
64 1.4 rillig
65 1.2 rillig /*
66 1.2 rillig * Declarations in functions without parentheses.
67 1.2 rillig */
68 1.8 rillig //indent input
69 1.1 rillig int
70 1.1 rillig sum(int a, int b)
71 1.1 rillig {
72 1.1 rillig return a +
73 1.2 rillig b;
74 1.2 rillig return first +
75 1.2 rillig second;
76 1.2 rillig }
77 1.8 rillig //indent end
78 1.2 rillig
79 1.8 rillig //indent run -ci0
80 1.2 rillig int
81 1.2 rillig sum(int a, int b)
82 1.2 rillig {
83 1.2 rillig return a +
84 1.2 rillig b;
85 1.2 rillig return first +
86 1.2 rillig second;
87 1.1 rillig }
88 1.8 rillig //indent end
89 1.1 rillig
90 1.8 rillig //indent run -ci2
91 1.1 rillig int
92 1.1 rillig sum(int a, int b)
93 1.1 rillig {
94 1.1 rillig return a +
95 1.1 rillig b;
96 1.2 rillig return first +
97 1.2 rillig second;
98 1.2 rillig }
99 1.8 rillig //indent end
100 1.2 rillig
101 1.8 rillig //indent run -ci4
102 1.2 rillig int
103 1.2 rillig sum(int a, int b)
104 1.2 rillig {
105 1.2 rillig return a +
106 1.2 rillig b;
107 1.2 rillig return first +
108 1.2 rillig second;
109 1.2 rillig }
110 1.8 rillig //indent end
111 1.2 rillig
112 1.8 rillig //indent run -ci8
113 1.2 rillig int
114 1.2 rillig sum(int a, int b)
115 1.2 rillig {
116 1.2 rillig return a +
117 1.2 rillig b;
118 1.2 rillig return first +
119 1.2 rillig second;
120 1.2 rillig }
121 1.8 rillig //indent end
122 1.2 rillig
123 1.2 rillig
124 1.2 rillig /*
125 1.2 rillig * Continued statements with expressions in parentheses.
126 1.2 rillig */
127 1.8 rillig //indent input
128 1.2 rillig int
129 1.2 rillig sum(int a, int b)
130 1.2 rillig {
131 1.2 rillig return (a +
132 1.2 rillig b);
133 1.2 rillig return (first +
134 1.2 rillig second + (
135 1.2 rillig third));
136 1.2 rillig }
137 1.8 rillig //indent end
138 1.2 rillig
139 1.8 rillig //indent run -ci0
140 1.2 rillig int
141 1.2 rillig sum(int a, int b)
142 1.2 rillig {
143 1.3 rillig return (a +
144 1.3 rillig b);
145 1.3 rillig return (first +
146 1.3 rillig second + (
147 1.3 rillig third));
148 1.2 rillig }
149 1.8 rillig //indent end
150 1.7 rillig
151 1.8 rillig //indent run-equals-prev-output -ci2
152 1.7 rillig
153 1.8 rillig //indent run-equals-prev-output -ci4
154 1.7 rillig
155 1.8 rillig //indent run-equals-prev-output -ci8
156 1.2 rillig
157 1.8 rillig //indent run -ci2 -nlp
158 1.2 rillig int
159 1.2 rillig sum(int a, int b)
160 1.2 rillig {
161 1.3 rillig return (a +
162 1.2 rillig b);
163 1.3 rillig return (first +
164 1.2 rillig second + (
165 1.2 rillig third));
166 1.2 rillig }
167 1.8 rillig //indent end
168 1.2 rillig
169 1.8 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.10 rillig third));
178 1.2 rillig }
179 1.8 rillig //indent end
180 1.2 rillig
181 1.8 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.8 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.8 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.8 rillig //indent end
212 1.5 rillig
213 1.8 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.8 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.8 rillig //indent end
232 1.9 rillig
233 1.9 rillig
234 1.9 rillig //indent input
235 1.9 rillig {
236 1.9 rillig size_t last_word_len = com.len
237 1.9 rillig - (size_t)(last_blank + 1);
238 1.9 rillig }
239 1.9 rillig //indent end
240 1.9 rillig
241 1.11 rillig //indent run-equals-input -ldi0 -ci4
242