xref: /netbsd-src/tests/usr.bin/indent/opt_bc.c (revision 65e3242c1e7ce8e4fda93bdaae8c93d7270ffe07)
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