1 /* $NetBSD: opt_ci.c,v 1.8 2022/04/24 09:04:12 rillig Exp $ */ 2 3 /* 4 * Tests for the option '-ci', which controls the indentation of continuation 5 * lines in statements and declarations, but only inside a function. 6 */ 7 8 /* 9 * Top level expressions with and without parentheses. 10 */ 11 //indent input 12 int top_level = 1 + 13 2; 14 int top_level = (1 + 15 2 + ( 16 3)); 17 //indent end 18 19 //indent run -ci0 20 int top_level = 1 + 21 2; 22 int top_level = (1 + 23 2 + ( 24 3)); 25 //indent end 26 27 //indent run-equals-prev-output -ci2 28 29 //indent run-equals-prev-output -ci4 30 31 //indent run-equals-prev-output -ci8 32 33 //indent run -ci0 -nlp 34 int top_level = 1 + 35 2; 36 int top_level = (1 + 37 2 + ( 38 3)); 39 //indent end 40 41 //indent run -ci2 -nlp 42 int top_level = 1 + 43 2; 44 int top_level = (1 + 45 2 + ( 46 3)); 47 //indent end 48 49 /* 50 * Since '-ci4' is half an indentation level, indent all continuations using 51 * the same level, no matter how many parentheses there are. The rationale for 52 * this may have been to prevent that the continuation line has the same 53 * indentation as a follow-up statement, such as in 'if' statements. 54 */ 55 //indent run -ci4 -nlp 56 int top_level = 1 + 57 2; 58 int top_level = (1 + 59 2 + ( 60 3)); 61 //indent end 62 63 64 /* 65 * Declarations in functions without parentheses. 66 */ 67 //indent input 68 int 69 sum(int a, int b) 70 { 71 return a + 72 b; 73 return first + 74 second; 75 } 76 //indent end 77 78 //indent run -ci0 79 int 80 sum(int a, int b) 81 { 82 return a + 83 b; 84 return first + 85 second; 86 } 87 //indent end 88 89 //indent run -ci2 90 int 91 sum(int a, int b) 92 { 93 return a + 94 b; 95 return first + 96 second; 97 } 98 //indent end 99 100 //indent run -ci4 101 int 102 sum(int a, int b) 103 { 104 return a + 105 b; 106 return first + 107 second; 108 } 109 //indent end 110 111 //indent run -ci8 112 int 113 sum(int a, int b) 114 { 115 return a + 116 b; 117 return first + 118 second; 119 } 120 //indent end 121 122 123 /* 124 * Continued statements with expressions in parentheses. 125 */ 126 //indent input 127 int 128 sum(int a, int b) 129 { 130 return (a + 131 b); 132 return (first + 133 second + ( 134 third)); 135 } 136 //indent end 137 138 //indent run -ci0 139 int 140 sum(int a, int b) 141 { 142 return (a + 143 b); 144 return (first + 145 second + ( 146 third)); 147 } 148 //indent end 149 150 //indent run-equals-prev-output -ci2 151 152 //indent run-equals-prev-output -ci4 153 154 //indent run-equals-prev-output -ci8 155 156 //indent run -ci2 -nlp 157 int 158 sum(int a, int b) 159 { 160 return (a + 161 b); 162 return (first + 163 second + ( 164 third)); 165 } 166 //indent end 167 168 /* 169 * Since '-ci4' is half an indentation level, indent all continuations using 170 * the same level, no matter how many parentheses there are. The rationale for 171 * this may have been to prevent that the continuation line has the same 172 * indentation as a follow-up statement, such as in 'if' statements. 173 */ 174 //indent run -ci4 -nlp 175 int 176 sum(int a, int b) 177 { 178 return (a + 179 b); 180 return (first + 181 second + ( 182 third)); 183 } 184 //indent end 185 186 //indent run -ci8 -nlp 187 int 188 sum(int a, int b) 189 { 190 return (a + 191 b); 192 return (first + 193 second + ( 194 third)); 195 } 196 //indent end 197 198 199 /* 200 * In the default configuration, the indentation level from '-i' is the same 201 * as the continuation indentation from '-ci'. The difference between these 202 * becomes visible for structural macros like 'forever' or 'foreach'. 203 */ 204 //indent input 205 #define forever for (;;) 206 void 207 function(void) 208 { 209 forever 210 stmt(); 211 212 forever { 213 stmt(); 214 } 215 } 216 //indent end 217 218 //indent run-equals-input 219 220 /* 221 * The difference between the block indentation and the continuation 222 * indentation only becomes visible when these two differ. 223 */ 224 //indent run -i8 -ci4 225 #define forever for (;;) 226 void 227 function(void) 228 { 229 forever 230 stmt(); 231 232 forever { 233 stmt(); 234 } 235 } 236 //indent end 237