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