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