1*65e3242cSrillig /* $NetBSD: opt_bc.c,v 1.13 2023/06/17 22:09:24 rillig Exp $ */
20c07b89fSrillig
3ec30234bSrillig /*
4ec30234bSrillig * Tests for the options '-bc' and '-nbc'.
5ec30234bSrillig *
6ec30234bSrillig * The option '-bc' forces a newline after each comma in a declaration.
7ec30234bSrillig *
86c6e6473Srillig * The option '-nbc' removes line breaks between declarators. In most other
96c6e6473Srillig * places, indent preserves line breaks.
10ec30234bSrillig */
11ec30234bSrillig
1247306038Srillig //indent input
130c07b89fSrillig int a,b,c;
140c07b89fSrillig void function_declaration(int a,int b,int c);
156c6e6473Srillig int m1,
166c6e6473Srillig m2,
176c6e6473Srillig m3;
186c6e6473Srillig char plain, *pointer;
1947306038Srillig //indent end
200c07b89fSrillig
2147306038Srillig //indent run -bc
220c07b89fSrillig int a,
230c07b89fSrillig b,
240c07b89fSrillig c;
250c07b89fSrillig void function_declaration(int a, int b, int c);
266c6e6473Srillig int m1,
276c6e6473Srillig m2,
286c6e6473Srillig m3;
296c6e6473Srillig char plain,
306c6e6473Srillig *pointer;
3147306038Srillig //indent end
320c07b89fSrillig
3347306038Srillig //indent run -nbc
340c07b89fSrillig int a, b, c;
350c07b89fSrillig void function_declaration(int a, int b, int c);
366c6e6473Srillig int m1, m2, m3;
376c6e6473Srillig char plain, *pointer;
3847306038Srillig //indent end
396c6e6473Srillig
406c6e6473Srillig
4147306038Srillig //indent input
old_style_definition(a,b,c)426c6e6473Srillig old_style_definition(a, b, c)
436c6e6473Srillig double a,b,c;
446c6e6473Srillig {
456c6e6473Srillig return a+b+c;
466c6e6473Srillig }
4747306038Srillig //indent end
486c6e6473Srillig
4947306038Srillig //indent run -bc
old_style_definition(a,b,c)506c6e6473Srillig old_style_definition(a, b, c)
516c6e6473Srillig double a,
526c6e6473Srillig b,
536c6e6473Srillig c;
546c6e6473Srillig {
556c6e6473Srillig return a + b + c;
566c6e6473Srillig }
5747306038Srillig //indent end
586c6e6473Srillig
5947306038Srillig //indent run -nbc
old_style_definition(a,b,c)606c6e6473Srillig old_style_definition(a, b, c)
616c6e6473Srillig double a, b, c;
626c6e6473Srillig {
636c6e6473Srillig return a + b + c;
646c6e6473Srillig }
6547306038Srillig //indent end
6675113203Srillig
6775113203Srillig
68a565c86fSrillig /*
69a565c86fSrillig * Before indent.c 1.311 from 2023-06-02, indent formatted the two '#if'
70a565c86fSrillig * branches differently and merged the 'b, c' with the preceding preprocessing
71a565c86fSrillig * line.
72a565c86fSrillig */
7375113203Srillig //indent input
7475113203Srillig int a,
7575113203Srillig #if 0
7675113203Srillig b, c; int d;
7775113203Srillig #else
7875113203Srillig b, c; int d;
7975113203Srillig #endif
8075113203Srillig //indent end
8175113203Srillig
8275113203Srillig //indent run -bc
8375113203Srillig int a,
8475113203Srillig #if 0
8575113203Srillig b,
8675113203Srillig c;
8775113203Srillig int d;
8875113203Srillig #else
89a565c86fSrillig b,
90a565c86fSrillig c;
9175113203Srillig int d;
9275113203Srillig #endif
9375113203Srillig //indent end
9475113203Srillig
9575113203Srillig //indent run -nbc
9675113203Srillig int a,
97a565c86fSrillig #if 0
98a565c86fSrillig b, c;
9975113203Srillig int d;
10075113203Srillig #else
10175113203Srillig b, c;
10275113203Srillig int d;
10375113203Srillig #endif
10475113203Srillig //indent end
105338e471fSrillig
106338e471fSrillig
107338e471fSrillig /*
108f74eb548Srillig * Before 2023-06-10, a '(' at the top level started a function definition,
109f74eb548Srillig * leaving variable declaration mode.
110338e471fSrillig */
111338e471fSrillig //indent input
112338e471fSrillig int a = 1, b = 2;
113338e471fSrillig int a = (1), b = 2;
114338e471fSrillig //indent end
115338e471fSrillig
116338e471fSrillig //indent run -bc
117338e471fSrillig int a = 1,
118338e471fSrillig b = 2;
119f74eb548Srillig int a = (1),
120f74eb548Srillig b = 2;
121338e471fSrillig //indent end
122641fe745Srillig
123641fe745Srillig
124940b8500Srillig //indent input
125940b8500Srillig int a,
126940b8500Srillig b,
127940b8500Srillig c;
128940b8500Srillig //indent end
129940b8500Srillig
130940b8500Srillig //indent run -nbc -di0
131940b8500Srillig int a, b, c;
132940b8500Srillig //indent end
133940b8500Srillig
134940b8500Srillig
135641fe745Srillig /*
136641fe745Srillig * When declarations are too long to fit in a single line, they should not be
137641fe745Srillig * joined.
138641fe745Srillig */
139641fe745Srillig //indent input
140641fe745Srillig {
141641fe745Srillig const struct paren_level *prev = state.prev_ps.paren.item,
142641fe745Srillig *curr = ps.paren.item;
143641fe745Srillig }
144641fe745Srillig //indent end
145641fe745Srillig
146641fe745Srillig //indent run
147641fe745Srillig // $ FIXME: The line becomes too long.
148641fe745Srillig {
149641fe745Srillig const struct paren_level *prev = state.prev_ps.paren.item, *curr = ps.paren.item;
150641fe745Srillig }
151641fe745Srillig //indent end
152*65e3242cSrillig
153*65e3242cSrillig
154*65e3242cSrillig /*
155*65e3242cSrillig * In struct or union declarations, the declarators are split onto separate
156*65e3242cSrillig * lines, just like in ordinary declarations.
157*65e3242cSrillig *
158*65e3242cSrillig * In enum declarations and in initializers, no line breaks are added or
159*65e3242cSrillig * removed.
160*65e3242cSrillig */
161*65e3242cSrillig //indent input
162*65e3242cSrillig struct triple_struct {
163*65e3242cSrillig int a, b, c;
164*65e3242cSrillig };
165*65e3242cSrillig union triple_union {
166*65e3242cSrillig int a, b, c;
167*65e3242cSrillig };
168*65e3242cSrillig enum triple_enum {
169*65e3242cSrillig triple_a, triple_b,
170*65e3242cSrillig
171*65e3242cSrillig triple_c,
172*65e3242cSrillig };
173*65e3242cSrillig //indent end
174*65e3242cSrillig
175*65e3242cSrillig //indent run -bc
176*65e3242cSrillig struct triple_struct {
177*65e3242cSrillig int a,
178*65e3242cSrillig b,
179*65e3242cSrillig c;
180*65e3242cSrillig };
181*65e3242cSrillig union triple_union {
182*65e3242cSrillig int a,
183*65e3242cSrillig b,
184*65e3242cSrillig c;
185*65e3242cSrillig };
186*65e3242cSrillig enum triple_enum {
187*65e3242cSrillig triple_a, triple_b,
188*65e3242cSrillig
189*65e3242cSrillig triple_c,
190*65e3242cSrillig };
191*65e3242cSrillig //indent end
192*65e3242cSrillig
193*65e3242cSrillig //indent run -nbc
194*65e3242cSrillig struct triple_struct {
195*65e3242cSrillig int a, b, c;
196*65e3242cSrillig };
197*65e3242cSrillig union triple_union {
198*65e3242cSrillig int a, b, c;
199*65e3242cSrillig };
200*65e3242cSrillig enum triple_enum {
201*65e3242cSrillig triple_a, triple_b,
202*65e3242cSrillig
203*65e3242cSrillig triple_c,
204*65e3242cSrillig };
205*65e3242cSrillig //indent end
206