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