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