opt_bc.c revision 1.13 1 1.13 rillig /* $NetBSD: opt_bc.c,v 1.13 2023/06/17 22:09:24 rillig Exp $ */
2 1.1 rillig
3 1.3 rillig /*
4 1.3 rillig * Tests for the options '-bc' and '-nbc'.
5 1.3 rillig *
6 1.3 rillig * The option '-bc' forces a newline after each comma in a declaration.
7 1.3 rillig *
8 1.4 rillig * The option '-nbc' removes line breaks between declarators. In most other
9 1.4 rillig * places, indent preserves line breaks.
10 1.3 rillig */
11 1.3 rillig
12 1.6 rillig //indent input
13 1.1 rillig int a,b,c;
14 1.1 rillig void function_declaration(int a,int b,int c);
15 1.4 rillig int m1,
16 1.4 rillig m2,
17 1.4 rillig m3;
18 1.4 rillig char plain, *pointer;
19 1.6 rillig //indent end
20 1.1 rillig
21 1.6 rillig //indent run -bc
22 1.1 rillig int a,
23 1.1 rillig b,
24 1.1 rillig c;
25 1.1 rillig void function_declaration(int a, int b, int c);
26 1.4 rillig int m1,
27 1.4 rillig m2,
28 1.4 rillig m3;
29 1.4 rillig char plain,
30 1.4 rillig *pointer;
31 1.6 rillig //indent end
32 1.1 rillig
33 1.6 rillig //indent run -nbc
34 1.1 rillig int a, b, c;
35 1.1 rillig void function_declaration(int a, int b, int c);
36 1.4 rillig int m1, m2, m3;
37 1.4 rillig char plain, *pointer;
38 1.6 rillig //indent end
39 1.4 rillig
40 1.4 rillig
41 1.6 rillig //indent input
42 1.4 rillig old_style_definition(a, b, c)
43 1.4 rillig double a,b,c;
44 1.4 rillig {
45 1.4 rillig return a+b+c;
46 1.4 rillig }
47 1.6 rillig //indent end
48 1.4 rillig
49 1.6 rillig //indent run -bc
50 1.4 rillig old_style_definition(a, b, c)
51 1.4 rillig double a,
52 1.4 rillig b,
53 1.4 rillig c;
54 1.4 rillig {
55 1.4 rillig return a + b + c;
56 1.4 rillig }
57 1.6 rillig //indent end
58 1.4 rillig
59 1.6 rillig //indent run -nbc
60 1.4 rillig old_style_definition(a, b, c)
61 1.4 rillig double a, b, c;
62 1.4 rillig {
63 1.4 rillig return a + b + c;
64 1.4 rillig }
65 1.6 rillig //indent end
66 1.7 rillig
67 1.7 rillig
68 1.8 rillig /*
69 1.8 rillig * Before indent.c 1.311 from 2023-06-02, indent formatted the two '#if'
70 1.8 rillig * branches differently and merged the 'b, c' with the preceding preprocessing
71 1.8 rillig * line.
72 1.8 rillig */
73 1.7 rillig //indent input
74 1.7 rillig int a,
75 1.7 rillig #if 0
76 1.7 rillig b, c; int d;
77 1.7 rillig #else
78 1.7 rillig b, c; int d;
79 1.7 rillig #endif
80 1.7 rillig //indent end
81 1.7 rillig
82 1.7 rillig //indent run -bc
83 1.7 rillig int a,
84 1.7 rillig #if 0
85 1.7 rillig b,
86 1.7 rillig c;
87 1.7 rillig int d;
88 1.7 rillig #else
89 1.8 rillig b,
90 1.8 rillig c;
91 1.7 rillig int d;
92 1.7 rillig #endif
93 1.7 rillig //indent end
94 1.7 rillig
95 1.7 rillig //indent run -nbc
96 1.7 rillig int a,
97 1.8 rillig #if 0
98 1.8 rillig b, c;
99 1.7 rillig int d;
100 1.7 rillig #else
101 1.7 rillig b, c;
102 1.7 rillig int d;
103 1.7 rillig #endif
104 1.7 rillig //indent end
105 1.9 rillig
106 1.9 rillig
107 1.9 rillig /*
108 1.10 rillig * Before 2023-06-10, a '(' at the top level started a function definition,
109 1.10 rillig * leaving variable declaration mode.
110 1.9 rillig */
111 1.9 rillig //indent input
112 1.9 rillig int a = 1, b = 2;
113 1.9 rillig int a = (1), b = 2;
114 1.9 rillig //indent end
115 1.9 rillig
116 1.9 rillig //indent run -bc
117 1.9 rillig int a = 1,
118 1.9 rillig b = 2;
119 1.10 rillig int a = (1),
120 1.10 rillig b = 2;
121 1.9 rillig //indent end
122 1.11 rillig
123 1.11 rillig
124 1.12 rillig //indent input
125 1.12 rillig int a,
126 1.12 rillig b,
127 1.12 rillig c;
128 1.12 rillig //indent end
129 1.12 rillig
130 1.12 rillig //indent run -nbc -di0
131 1.12 rillig int a, b, c;
132 1.12 rillig //indent end
133 1.12 rillig
134 1.12 rillig
135 1.11 rillig /*
136 1.11 rillig * When declarations are too long to fit in a single line, they should not be
137 1.11 rillig * joined.
138 1.11 rillig */
139 1.11 rillig //indent input
140 1.11 rillig {
141 1.11 rillig const struct paren_level *prev = state.prev_ps.paren.item,
142 1.11 rillig *curr = ps.paren.item;
143 1.11 rillig }
144 1.11 rillig //indent end
145 1.11 rillig
146 1.11 rillig //indent run
147 1.11 rillig // $ FIXME: The line becomes too long.
148 1.11 rillig {
149 1.11 rillig const struct paren_level *prev = state.prev_ps.paren.item, *curr = ps.paren.item;
150 1.11 rillig }
151 1.11 rillig //indent end
152 1.13 rillig
153 1.13 rillig
154 1.13 rillig /*
155 1.13 rillig * In struct or union declarations, the declarators are split onto separate
156 1.13 rillig * lines, just like in ordinary declarations.
157 1.13 rillig *
158 1.13 rillig * In enum declarations and in initializers, no line breaks are added or
159 1.13 rillig * removed.
160 1.13 rillig */
161 1.13 rillig //indent input
162 1.13 rillig struct triple_struct {
163 1.13 rillig int a, b, c;
164 1.13 rillig };
165 1.13 rillig union triple_union {
166 1.13 rillig int a, b, c;
167 1.13 rillig };
168 1.13 rillig enum triple_enum {
169 1.13 rillig triple_a, triple_b,
170 1.13 rillig
171 1.13 rillig triple_c,
172 1.13 rillig };
173 1.13 rillig //indent end
174 1.13 rillig
175 1.13 rillig //indent run -bc
176 1.13 rillig struct triple_struct {
177 1.13 rillig int a,
178 1.13 rillig b,
179 1.13 rillig c;
180 1.13 rillig };
181 1.13 rillig union triple_union {
182 1.13 rillig int a,
183 1.13 rillig b,
184 1.13 rillig c;
185 1.13 rillig };
186 1.13 rillig enum triple_enum {
187 1.13 rillig triple_a, triple_b,
188 1.13 rillig
189 1.13 rillig triple_c,
190 1.13 rillig };
191 1.13 rillig //indent end
192 1.13 rillig
193 1.13 rillig //indent run -nbc
194 1.13 rillig struct triple_struct {
195 1.13 rillig int a, b, c;
196 1.13 rillig };
197 1.13 rillig union triple_union {
198 1.13 rillig int a, b, c;
199 1.13 rillig };
200 1.13 rillig enum triple_enum {
201 1.13 rillig triple_a, triple_b,
202 1.13 rillig
203 1.13 rillig triple_c,
204 1.13 rillig };
205 1.13 rillig //indent end
206