1 1.25 rillig /* $NetBSD: lsym_comment.c,v 1.25 2025/01/03 23:37:18 rillig Exp $ */ 2 1.1 rillig 3 1.1 rillig /* 4 1.1 rillig * Tests for the token lsym_comment, which starts a comment. 5 1.1 rillig * 6 1.1 rillig * C11 distinguishes block comments and end-of-line comments. Indent further 7 1.1 rillig * distinguishes box comments that are a special kind of block comments. 8 1.1 rillig * 9 1.1 rillig * See also: 10 1.1 rillig * opt_fc1.c 11 1.15 rillig * lsym_comment.c 12 1.1 rillig */ 13 1.1 rillig 14 1.4 rillig /*- 15 1.4 rillig * TODO: systematically test comments 16 1.4 rillig * 17 1.4 rillig * - starting in column 1, with opt.format_col1_comments (-fc1) 18 1.4 rillig * - starting in column 1, without opt.format_col1_comments (-fc1) 19 1.4 rillig * - starting in column 9, independent of opt.format_col1_comments (-fc1) 20 1.4 rillig * - starting in column 33, the default 21 1.4 rillig * - starting in column 65, which is already close to the default right margin 22 1.4 rillig * - starting in column 81, spilling into the right margin 23 1.4 rillig * 24 1.4 rillig * - block comment starting with '/' '*' '-' 25 1.4 rillig * - block comment starting with '/' '*' '*' 26 1.4 rillig * - block comment starting with '/' '*' '\n' 27 1.4 rillig * - end-of-line comment starting with '//' 28 1.4 rillig * - end-of-line comment starting with '//x', so without leading space 29 1.4 rillig * - block comment starting with '/' '*' 'x', so without leading space 30 1.4 rillig * 31 1.4 rillig * - block/end-of-line comment to the right of a label 32 1.4 rillig * - block/end-of-line comment to the right of code 33 1.4 rillig * - block/end-of-line comment to the right of label with code 34 1.4 rillig * 35 1.20 rillig * - with/without opt.comment_delimiter_on_blank_line (-cdb) 36 1.4 rillig * - with/without opt.star_comment_cont (-sc) 37 1.4 rillig * - with/without opt.format_block_comments (-fbc) 38 1.4 rillig * - with varying opt.max_line_length (32, 64, 80, 140) 39 1.4 rillig * - with varying opt.unindent_displace (-d0, -d2, -d-5) 40 1.4 rillig * - with varying opt.indent_size (3, 4, 8) 41 1.4 rillig * - with varying opt.tabsize (3, 4, 8, 16) 42 1.4 rillig * - with varying opt.block_comment_max_line_length (-lc60, -lc78, -lc90) 43 1.4 rillig * - with varying opt.comment_column (-c0, -c1, -c33, -c80) 44 1.4 rillig * - with varying opt.decl_comment_column (-cd0, -cd1, -cd20, -cd33, -cd80) 45 1.19 rillig * - with/without ps.line_has_decl 46 1.4 rillig * 47 1.4 rillig * - very long comments that overflow the buffer 'com' 48 1.4 rillig * - comments that come from save_com 49 1.4 rillig * - very long word that already spills over the right margin 50 1.4 rillig * - wrap/nowrap comment containing '\n' 51 1.4 rillig * - wrap/nowrap comment containing '\f' 52 1.4 rillig * - wrap/nowrap comment containing '\t' 53 1.4 rillig */ 54 1.4 rillig 55 1.4 rillig //indent input 56 1.4 rillig typedef enum x { 57 1.4 rillig aaaaaaaaaaaaaaaaaaaaaa = 1 << 0, /* test a */ 58 1.4 rillig bbbbbbbbbbbbbbbbb = 1 << 1, /* test b */ 59 1.4 rillig cccccccccccccc = 1 << 1, /* test c */ 60 1.4 rillig dddddddddddddddddddddddddddddd = 1 << 2 /* test d */ 61 1.4 rillig } x; 62 1.4 rillig //indent end 63 1.4 rillig 64 1.4 rillig //indent run-equals-input -bbb 65 1.4 rillig 66 1.4 rillig 67 1.4 rillig //indent input 68 1.4 rillig /* See FreeBSD r303597, r303598, r309219, and r309343 */ 69 1.4 rillig void 70 1.4 rillig t(void) { 71 1.4 rillig /* 72 1.4 rillig * Old indent wrapped the URL near where this sentence ends. 73 1.4 rillig * 74 1.4 rillig * https://www.freebsd.org/cgi/man.cgi?query=indent&apropos=0&sektion=0&manpath=FreeBSD+12-current&arch=default&format=html 75 1.4 rillig */ 76 1.4 rillig 77 1.4 rillig /* 78 1.4 rillig * The default maximum line length for comments is 78, and the 'kk' at 79 1.4 rillig * the end makes the line exactly 78 bytes long. 80 1.4 rillig * 81 1.4 rillig * aaaaaa bbbbbb cccccc dddddd eeeeee ffffff ggggg hhhhh iiiii jjjj kk 82 1.4 rillig */ 83 1.4 rillig 84 1.4 rillig /* 85 1.4 rillig * Old indent unnecessarily removed the star comment continuation on the next line. 86 1.4 rillig * 87 1.4 rillig * *test* 88 1.4 rillig */ 89 1.4 rillig 90 1.4 rillig /* r309219 Go through linked list, freeing from the malloced (t[-1]) address. */ 91 1.4 rillig 92 1.4 rillig /* r309343 */ 93 1.4 rillig } 94 1.4 rillig //indent end 95 1.4 rillig 96 1.4 rillig //indent run -bbb 97 1.4 rillig /* See FreeBSD r303597, r303598, r309219, and r309343 */ 98 1.4 rillig void 99 1.4 rillig t(void) 100 1.4 rillig { 101 1.14 rillig 102 1.4 rillig /* 103 1.4 rillig * Old indent wrapped the URL near where this sentence ends. 104 1.4 rillig * 105 1.4 rillig * https://www.freebsd.org/cgi/man.cgi?query=indent&apropos=0&sektion=0&manpath=FreeBSD+12-current&arch=default&format=html 106 1.4 rillig */ 107 1.4 rillig 108 1.4 rillig /* 109 1.4 rillig * The default maximum line length for comments is 78, and the 'kk' at 110 1.4 rillig * the end makes the line exactly 78 bytes long. 111 1.4 rillig * 112 1.4 rillig * aaaaaa bbbbbb cccccc dddddd eeeeee ffffff ggggg hhhhh iiiii jjjj kk 113 1.4 rillig */ 114 1.4 rillig 115 1.4 rillig /* 116 1.4 rillig * Old indent unnecessarily removed the star comment continuation on 117 1.4 rillig * the next line. 118 1.4 rillig * 119 1.4 rillig * *test* 120 1.4 rillig */ 121 1.4 rillig 122 1.4 rillig /* 123 1.4 rillig * r309219 Go through linked list, freeing from the malloced (t[-1]) 124 1.4 rillig * address. 125 1.4 rillig */ 126 1.4 rillig 127 1.4 rillig /* r309343 */ 128 1.4 rillig } 129 1.4 rillig //indent end 130 1.4 rillig 131 1.4 rillig 132 1.4 rillig /* 133 1.4 rillig * The first Christmas tree is to the right of the code, therefore the comment 134 1.4 rillig * is moved to the code comment column; the follow-up lines of that comment 135 1.4 rillig * are moved by the same distance, to preserve the internal layout. 136 1.4 rillig * 137 1.4 rillig * The other Christmas tree is a standalone block comment, therefore the 138 1.4 rillig * comment starts in the code column. 139 1.4 rillig */ 140 1.4 rillig //indent input 141 1.4 rillig { 142 1.15 rillig if (1) /*- a Christmas tree * 143 1.4 rillig *** 144 1.4 rillig ***** */ 145 1.15 rillig /*- another one * 146 1.4 rillig *** 147 1.4 rillig ***** */ 148 1.4 rillig 1; 149 1.4 rillig } 150 1.4 rillig //indent end 151 1.4 rillig 152 1.4 rillig //indent run -bbb 153 1.4 rillig { 154 1.15 rillig if (1) /*- a Christmas tree * 155 1.4 rillig *** 156 1.4 rillig ***** */ 157 1.15 rillig /*- another one * 158 1.4 rillig *** 159 1.4 rillig ***** */ 160 1.4 rillig 1; 161 1.4 rillig } 162 1.4 rillig //indent end 163 1.4 rillig 164 1.4 rillig 165 1.4 rillig /* 166 1.4 rillig * The first Christmas tree is to the right of the code, therefore the comment 167 1.4 rillig * is moved to the code comment column; the follow-up lines of that comment 168 1.4 rillig * are moved by the same distance, to preserve the internal layout. 169 1.4 rillig * 170 1.4 rillig * The other Christmas tree is a standalone block comment, therefore the 171 1.4 rillig * comment starts in the code column. 172 1.4 rillig */ 173 1.4 rillig //indent input 174 1.4 rillig { 175 1.4 rillig if (7) { /*- a Christmas tree * 176 1.4 rillig *** 177 1.4 rillig ***** */ 178 1.4 rillig /*- another one * 179 1.4 rillig *** 180 1.4 rillig ***** */ 181 1.4 rillig stmt(); 182 1.4 rillig } 183 1.4 rillig } 184 1.4 rillig //indent end 185 1.4 rillig 186 1.4 rillig //indent run -bbb 187 1.4 rillig { 188 1.4 rillig if (7) { /*- a Christmas tree * 189 1.4 rillig *** 190 1.4 rillig ***** */ 191 1.4 rillig /*- another one * 192 1.4 rillig *** 193 1.4 rillig ***** */ 194 1.4 rillig stmt(); 195 1.4 rillig } 196 1.4 rillig } 197 1.4 rillig //indent end 198 1.4 rillig 199 1.4 rillig 200 1.4 rillig //indent input 201 1.4 rillig int decl;/*-fixed comment 202 1.4 rillig fixed comment*/ 203 1.4 rillig //indent end 204 1.4 rillig 205 1.4 rillig //indent run -di0 206 1.4 rillig int decl; /*-fixed comment 207 1.4 rillig fixed comment*/ 208 1.4 rillig //indent end 209 1.4 rillig /* 210 1.4 rillig * XXX: The second line of the above comment contains 11 spaces in a row, 211 1.4 rillig * instead of using as many tabs as possible. 212 1.4 rillig */ 213 1.4 rillig 214 1.4 rillig 215 1.4 rillig //indent input 216 1.4 rillig { 217 1.15 rillig if (0)/*-first line | 218 1.15 rillig second line |*/ 219 1.4 rillig ; 220 1.4 rillig } 221 1.4 rillig //indent end 222 1.4 rillig 223 1.4 rillig //indent run -di0 224 1.4 rillig { 225 1.15 rillig if (0) /*-first line | 226 1.15 rillig second line |*/ 227 1.4 rillig ; 228 1.4 rillig } 229 1.4 rillig //indent end 230 1.4 rillig 231 1.4 rillig 232 1.4 rillig /* 233 1.4 rillig * Ensure that all text of the comment is preserved when the comment is moved 234 1.4 rillig * to the right. 235 1.4 rillig */ 236 1.4 rillig //indent input 237 1.4 rillig int decl;/*-fixed comment 238 1.4 rillig 123456789ab fixed comment*/ 239 1.4 rillig //indent end 240 1.4 rillig 241 1.4 rillig //indent run -di0 242 1.4 rillig int decl; /*-fixed comment 243 1.4 rillig 123456789ab fixed comment*/ 244 1.4 rillig //indent end 245 1.4 rillig 246 1.4 rillig 247 1.4 rillig /* 248 1.4 rillig * Ensure that all text of the comment is preserved when the comment is moved 249 1.4 rillig * to the right. 250 1.4 rillig */ 251 1.4 rillig //indent input 252 1.4 rillig { 253 1.15 rillig if(0)/*-first line 254 1.15 rillig 123456789ab second line |*/ 255 1.4 rillig ; 256 1.4 rillig } 257 1.4 rillig //indent end 258 1.4 rillig 259 1.4 rillig //indent run -di0 260 1.4 rillig { 261 1.15 rillig if (0) /*-first line 262 1.15 rillig 123456789ab second line |*/ 263 1.4 rillig ; 264 1.4 rillig } 265 1.4 rillig //indent end 266 1.4 rillig 267 1.4 rillig 268 1.4 rillig /* 269 1.4 rillig * Ensure that all text of the comment is preserved when the comment is moved 270 1.4 rillig * to the left. In this case, the internal layout of the comment cannot be 271 1.4 rillig * preserved since the second line already starts in column 1. 272 1.4 rillig */ 273 1.4 rillig //indent input 274 1.4 rillig int decl; /*-|fixed comment 275 1.4 rillig | minus 12 | 276 1.4 rillig | tabs inside | 277 1.4 rillig |---| 278 1.4 rillig |-----------| 279 1.4 rillig tab1+++ tab2--- tab3+++ tab4--- tab5+++ tab6--- tab7+++fixed comment*/ 280 1.4 rillig //indent end 281 1.4 rillig 282 1.4 rillig //indent run -di0 283 1.4 rillig int decl; /*-|fixed comment 284 1.4 rillig | minus 12 | 285 1.4 rillig | tabs inside | 286 1.4 rillig |---| 287 1.4 rillig |-----------| 288 1.4 rillig tab1+++ tab2--- tab3+++ tab4--- tab5+++ tab6--- tab7+++fixed comment*/ 289 1.4 rillig //indent end 290 1.4 rillig 291 1.4 rillig 292 1.4 rillig /* 293 1.4 rillig * Ensure that all text of the comment is preserved when the comment is moved 294 1.4 rillig * to the left. In this case, the internal layout of the comment cannot be 295 1.4 rillig * preserved since the second line already starts in column 1. 296 1.4 rillig */ 297 1.4 rillig //indent input 298 1.4 rillig { 299 1.15 rillig if(0) /*-|first line 300 1.4 rillig | minus 12 | 301 1.4 rillig | tabs inside | 302 1.4 rillig |---| 303 1.4 rillig |-----------| 304 1.4 rillig tab1+++ tab2--- tab3+++ tab4--- tab5+++ tab6--- tab7+++fixed comment*/ 305 1.4 rillig ; 306 1.4 rillig } 307 1.4 rillig //indent end 308 1.4 rillig 309 1.4 rillig //indent run -di0 310 1.4 rillig { 311 1.15 rillig if (0) /*-|first line 312 1.4 rillig | minus 12 | 313 1.4 rillig | tabs inside | 314 1.4 rillig |---| 315 1.4 rillig |-----------| 316 1.4 rillig tab1+++ tab2--- tab3+++ tab4--- tab5+++ tab6--- tab7+++fixed comment*/ 317 1.4 rillig ; 318 1.4 rillig } 319 1.4 rillig //indent end 320 1.4 rillig 321 1.4 rillig 322 1.4 rillig /* 323 1.15 rillig * Ensure that '{' after a comment is preserved. 324 1.4 rillig */ 325 1.4 rillig //indent input 326 1.4 rillig { 327 1.4 rillig if(0)/*comment*/{ 328 1.4 rillig } 329 1.4 rillig } 330 1.4 rillig //indent end 331 1.4 rillig 332 1.15 rillig /* Before 2023-05-11, the comment and the '{' swapped places. */ 333 1.4 rillig //indent run 334 1.4 rillig { 335 1.5 rillig if (0) /* comment */ { 336 1.4 rillig } 337 1.4 rillig } 338 1.4 rillig //indent end 339 1.4 rillig 340 1.4 rillig 341 1.4 rillig /* 342 1.4 rillig * The following comments test line breaking when the comment ends with a 343 1.4 rillig * space. 344 1.4 rillig */ 345 1.4 rillig //indent input 346 1.4 rillig /* 456789 123456789 123456789 12345 */ 347 1.4 rillig /* 456789 123456789 123456789 123456 */ 348 1.4 rillig /* 456789 123456789 123456789 1234567 */ 349 1.4 rillig /* 456789 123456789 123456789 12345678 */ 350 1.4 rillig /* 456789 123456789 123456789 123456789 */ 351 1.4 rillig //indent end 352 1.4 rillig 353 1.4 rillig //indent run -l38 354 1.4 rillig /* 456789 123456789 123456789 12345 */ 355 1.4 rillig /* 356 1.4 rillig * 456789 123456789 123456789 123456 357 1.4 rillig */ 358 1.4 rillig /* 359 1.4 rillig * 456789 123456789 123456789 1234567 360 1.4 rillig */ 361 1.4 rillig /* 362 1.4 rillig * 456789 123456789 123456789 12345678 363 1.4 rillig */ 364 1.4 rillig /* 365 1.4 rillig * 456789 123456789 123456789 366 1.4 rillig * 123456789 367 1.4 rillig */ 368 1.4 rillig //indent end 369 1.4 rillig 370 1.4 rillig 371 1.4 rillig /* 372 1.18 rillig * When determining whether the comment fits in a single line, only the first 373 1.18 rillig * trailing space or tab is kept, the others are removed. 374 1.17 rillig */ 375 1.17 rillig //indent input 376 1.18 rillig /* tab: */ 377 1.17 rillig /* 456789 123456789 123456789 12345 */ 378 1.17 rillig /* 456789 123456789 123456789 123456 */ 379 1.18 rillig /* space: */ 380 1.18 rillig /* 456789 123456789 123456789 12345 */ 381 1.18 rillig /* 456789 123456789 123456789 123456 */ 382 1.17 rillig //indent end 383 1.17 rillig 384 1.17 rillig //indent run -l38 385 1.18 rillig /* tab: */ 386 1.17 rillig /* 387 1.17 rillig * 456789 123456789 123456789 12345 388 1.17 rillig */ 389 1.17 rillig /* 390 1.17 rillig * 456789 123456789 123456789 123456 391 1.17 rillig */ 392 1.18 rillig /* space: */ 393 1.18 rillig /* 456789 123456789 123456789 12345 */ 394 1.18 rillig /* 395 1.18 rillig * 456789 123456789 123456789 123456 396 1.18 rillig */ 397 1.17 rillig //indent end 398 1.17 rillig 399 1.17 rillig 400 1.17 rillig /* 401 1.4 rillig * The following comments test line breaking when the comment does not end 402 1.4 rillig * with a space. Since indent adds a trailing space to a single-line comment, 403 1.4 rillig * this space has to be taken into account when computing the line length. 404 1.4 rillig */ 405 1.4 rillig //indent input 406 1.4 rillig /* x . line length 35*/ 407 1.4 rillig /* x .. line length 36*/ 408 1.4 rillig /* x ... line length 37*/ 409 1.4 rillig /* x .... line length 38*/ 410 1.4 rillig /* x ..... line length 39*/ 411 1.4 rillig /* x ...... line length 40*/ 412 1.4 rillig /* x ....... line length 41*/ 413 1.4 rillig /* x ........ line length 42*/ 414 1.4 rillig //indent end 415 1.4 rillig 416 1.4 rillig //indent run -l38 417 1.4 rillig /* x . line length 35 */ 418 1.4 rillig /* x .. line length 36 */ 419 1.4 rillig /* x ... line length 37 */ 420 1.4 rillig /* x .... line length 38 */ 421 1.4 rillig /* 422 1.4 rillig * x ..... line length 39 423 1.4 rillig */ 424 1.4 rillig /* 425 1.4 rillig * x ...... line length 40 426 1.4 rillig */ 427 1.4 rillig /* 428 1.4 rillig * x ....... line length 41 429 1.4 rillig */ 430 1.4 rillig /* 431 1.4 rillig * x ........ line length 42 432 1.4 rillig */ 433 1.4 rillig //indent end 434 1.4 rillig 435 1.4 rillig 436 1.4 rillig /* 437 1.4 rillig * The different types of comments that indent distinguishes, starting in 438 1.4 rillig * column 1 (see options '-fc1' and '-nfc1'). 439 1.4 rillig */ 440 1.4 rillig //indent input 441 1.4 rillig /* This is a traditional C block comment. */ 442 1.4 rillig 443 1.4 rillig // This is a C99 line comment. 444 1.4 rillig 445 1.4 rillig /* 446 1.4 rillig * This is a box comment since its first line (the one above this line) is 447 1.4 rillig * empty. 448 1.4 rillig * 449 1.4 rillig * 450 1.4 rillig * 451 1.4 rillig * Its text gets wrapped. 452 1.4 rillig * Empty lines serve as paragraphs. 453 1.4 rillig */ 454 1.4 rillig 455 1.4 rillig /** 456 1.4 rillig * This is a box comment 457 1.4 rillig * that is not re-wrapped. 458 1.4 rillig */ 459 1.4 rillig 460 1.4 rillig /*- 461 1.4 rillig * This is a box comment 462 1.4 rillig * that is not re-wrapped. 463 1.4 rillig * It is often used for copyright declarations. 464 1.4 rillig */ 465 1.4 rillig //indent end 466 1.4 rillig 467 1.4 rillig //indent run 468 1.4 rillig /* This is a traditional C block comment. */ 469 1.4 rillig 470 1.4 rillig // This is a C99 line comment. 471 1.4 rillig 472 1.4 rillig /* 473 1.4 rillig * This is a box comment since its first line (the one above this line) is 474 1.4 rillig * empty. 475 1.4 rillig * 476 1.4 rillig * 477 1.4 rillig * 478 1.4 rillig * Its text gets wrapped. Empty lines serve as paragraphs. 479 1.4 rillig */ 480 1.4 rillig 481 1.4 rillig /** 482 1.4 rillig * This is a box comment 483 1.4 rillig * that is not re-wrapped. 484 1.4 rillig */ 485 1.4 rillig 486 1.4 rillig /*- 487 1.4 rillig * This is a box comment 488 1.4 rillig * that is not re-wrapped. 489 1.4 rillig * It is often used for copyright declarations. 490 1.4 rillig */ 491 1.4 rillig //indent end 492 1.4 rillig 493 1.4 rillig 494 1.4 rillig /* 495 1.4 rillig * The different types of comments that indent distinguishes, starting in 496 1.4 rillig * column 9, so they are independent of the option '-fc1'. 497 1.4 rillig */ 498 1.4 rillig //indent input 499 1.4 rillig void 500 1.4 rillig function(void) 501 1.4 rillig { 502 1.4 rillig /* This is a traditional C block comment. */ 503 1.4 rillig 504 1.4 rillig /* 505 1.4 rillig * This is a box comment. 506 1.4 rillig * 507 1.4 rillig * It starts in column 9, not 1, 508 1.4 rillig * therefore it gets re-wrapped. 509 1.4 rillig */ 510 1.4 rillig 511 1.4 rillig /** 512 1.4 rillig * This is a box comment 513 1.4 rillig * that is not re-wrapped, even though it starts in column 9, not 1. 514 1.4 rillig */ 515 1.4 rillig 516 1.4 rillig /*- 517 1.4 rillig * This is a box comment 518 1.4 rillig * that is not re-wrapped. 519 1.4 rillig */ 520 1.4 rillig } 521 1.4 rillig //indent end 522 1.4 rillig 523 1.4 rillig //indent run 524 1.4 rillig void 525 1.4 rillig function(void) 526 1.4 rillig { 527 1.4 rillig /* This is a traditional C block comment. */ 528 1.4 rillig 529 1.4 rillig /* 530 1.4 rillig * This is a box comment. 531 1.4 rillig * 532 1.4 rillig * It starts in column 9, not 1, therefore it gets re-wrapped. 533 1.4 rillig */ 534 1.4 rillig 535 1.4 rillig /** 536 1.4 rillig * This is a box comment 537 1.4 rillig * that is not re-wrapped, even though it starts in column 9, not 1. 538 1.4 rillig */ 539 1.4 rillig 540 1.4 rillig /*- 541 1.4 rillig * This is a box comment 542 1.4 rillig * that is not re-wrapped. 543 1.4 rillig */ 544 1.4 rillig } 545 1.4 rillig //indent end 546 1.4 rillig 547 1.4 rillig 548 1.4 rillig /* 549 1.4 rillig * Comments to the right of declarations. 550 1.4 rillig */ 551 1.4 rillig //indent input 552 1.4 rillig void 553 1.4 rillig function(void) 554 1.4 rillig { 555 1.4 rillig int decl; /* declaration comment */ 556 1.4 rillig 557 1.4 rillig int decl; /* short 558 1.4 rillig * multi-line 559 1.4 rillig * declaration 560 1.4 rillig * comment */ 561 1.4 rillig 562 1.4 rillig int decl; /* long single-line declaration comment that is longer than the allowed line width */ 563 1.4 rillig 564 1.4 rillig int decl; /* long multi-line declaration comment 565 1.4 rillig * that is longer than 566 1.4 rillig * the allowed line width */ 567 1.4 rillig 568 1.4 rillig int decl; // C99 declaration comment 569 1.4 rillig 570 1.4 rillig { 571 1.4 rillig int decl; /* indented declaration */ 572 1.4 rillig { 573 1.4 rillig int decl; /* indented declaration */ 574 1.4 rillig { 575 1.4 rillig int decl; /* indented declaration */ 576 1.4 rillig { 577 1.4 rillig int decl; /* indented declaration */ 578 1.4 rillig } 579 1.4 rillig } 580 1.4 rillig } 581 1.4 rillig } 582 1.4 rillig } 583 1.4 rillig //indent end 584 1.4 rillig 585 1.4 rillig //indent run -ldi0 586 1.4 rillig void 587 1.4 rillig function(void) 588 1.4 rillig { 589 1.4 rillig int decl; /* declaration comment */ 590 1.4 rillig 591 1.4 rillig int decl; /* short multi-line declaration comment */ 592 1.4 rillig 593 1.4 rillig int decl; /* long single-line declaration comment that 594 1.4 rillig * is longer than the allowed line width */ 595 1.4 rillig 596 1.4 rillig int decl; /* long multi-line declaration comment that is 597 1.4 rillig * longer than the allowed line width */ 598 1.4 rillig 599 1.4 rillig int decl; // C99 declaration comment 600 1.4 rillig 601 1.4 rillig { 602 1.4 rillig int decl; /* indented declaration */ 603 1.4 rillig { 604 1.4 rillig int decl; /* indented declaration */ 605 1.4 rillig { 606 1.4 rillig int decl; /* indented declaration */ 607 1.4 rillig { 608 1.11 rillig // $ This comment is indented so far to the right that it may overshoot the 609 1.11 rillig // $ right margin. The allowed line length is increased to the starting 610 1.11 rillig // $ indentation of 56 plus a fixed amount of 25 columns, resulting in 81. 611 1.11 rillig // $ The trailing '*' would fit, but the trailing '/' is too much. 612 1.11 rillig int decl; /* indented declaration 613 1.11 rillig */ 614 1.4 rillig } 615 1.4 rillig } 616 1.4 rillig } 617 1.4 rillig } 618 1.4 rillig } 619 1.4 rillig //indent end 620 1.4 rillig 621 1.4 rillig 622 1.4 rillig /* 623 1.4 rillig * Comments to the right of code. 624 1.4 rillig */ 625 1.4 rillig //indent input 626 1.4 rillig void 627 1.4 rillig function(void) 628 1.4 rillig { 629 1.4 rillig code(); /* code comment */ 630 1.4 rillig code(); /* code comment _________ to line length 78 */ 631 1.4 rillig code(); /* code comment __________ to line length 79 */ 632 1.4 rillig code(); /* code comment ___________ to line length 80 */ 633 1.4 rillig code(); /* code comment ____________ to line length 81 */ 634 1.4 rillig code(); /* code comment _____________ to line length 82 */ 635 1.4 rillig 636 1.4 rillig /* $ In the following comments, the line length is measured after formatting. */ 637 1.4 rillig code(); /* code comment _________ to line length 78*/ 638 1.4 rillig code(); /* code comment __________ to line length 79*/ 639 1.4 rillig code(); /* code comment ___________ to line length 80*/ 640 1.4 rillig code(); /* code comment ____________ to line length 81*/ 641 1.4 rillig code(); /* code comment _____________ to line length 82*/ 642 1.4 rillig 643 1.4 rillig code(); /* short 644 1.4 rillig * multi-line 645 1.4 rillig * code 646 1.4 rillig * comment */ 647 1.4 rillig 648 1.4 rillig code(); /* long single-line code comment that is longer than the allowed line width */ 649 1.4 rillig 650 1.4 rillig code(); /* long multi-line code comment 651 1.4 rillig * that is longer than 652 1.4 rillig * the allowed line width */ 653 1.4 rillig 654 1.4 rillig code(); // C99 code comment 655 1.4 rillig code(); // C99 code comment ________ to line length 78 656 1.4 rillig code(); // C99 code comment _________ to line length 79 657 1.4 rillig code(); // C99 code comment __________ to line length 80 658 1.4 rillig code(); // C99 code comment ___________ to line length 81 659 1.4 rillig code(); // C99 code comment ____________ to line length 82 660 1.4 rillig 661 1.4 rillig if (cond) /* comment */ 662 1.4 rillig if (cond) /* comment */ 663 1.4 rillig if (cond) /* comment */ 664 1.4 rillig if (cond) /* comment */ 665 1.4 rillig if (cond) /* comment */ 666 1.4 rillig code(); /* comment */ 667 1.4 rillig } 668 1.4 rillig //indent end 669 1.4 rillig 670 1.11 rillig //indent run -l78 671 1.4 rillig void 672 1.4 rillig function(void) 673 1.4 rillig { 674 1.4 rillig code(); /* code comment */ 675 1.4 rillig code(); /* code comment _________ to line length 78 */ 676 1.11 rillig code(); /* code comment __________ to line length 79 677 1.11 rillig */ 678 1.11 rillig code(); /* code comment ___________ to line length 80 679 1.11 rillig */ 680 1.11 rillig code(); /* code comment ____________ to line length 81 681 1.11 rillig */ 682 1.4 rillig code(); /* code comment _____________ to line length 683 1.4 rillig * 82 */ 684 1.4 rillig 685 1.4 rillig /* $ In the following comments, the line length is measured after formatting. */ 686 1.4 rillig code(); /* code comment _________ to line length 78 */ 687 1.11 rillig code(); /* code comment __________ to line length 79 688 1.11 rillig */ 689 1.11 rillig code(); /* code comment ___________ to line length 80 690 1.11 rillig */ 691 1.11 rillig code(); /* code comment ____________ to line length 81 692 1.11 rillig */ 693 1.4 rillig code(); /* code comment _____________ to line length 694 1.4 rillig * 82 */ 695 1.4 rillig 696 1.4 rillig code(); /* short multi-line code comment */ 697 1.4 rillig 698 1.4 rillig code(); /* long single-line code comment that is 699 1.4 rillig * longer than the allowed line width */ 700 1.4 rillig 701 1.4 rillig code(); /* long multi-line code comment that is longer 702 1.4 rillig * than the allowed line width */ 703 1.4 rillig 704 1.4 rillig /* $ Trailing C99 comments are not wrapped, as indent would not correctly */ 705 1.4 rillig /* $ recognize the continuation lines as continued comments. For block */ 706 1.4 rillig /* $ comments this works since the comment has not ended yet. */ 707 1.4 rillig code(); // C99 code comment 708 1.4 rillig code(); // C99 code comment ________ to line length 78 709 1.4 rillig code(); // C99 code comment _________ to line length 79 710 1.4 rillig code(); // C99 code comment __________ to line length 80 711 1.4 rillig code(); // C99 code comment ___________ to line length 81 712 1.4 rillig code(); // C99 code comment ____________ to line length 82 713 1.4 rillig 714 1.4 rillig if (cond) /* comment */ 715 1.4 rillig if (cond) /* comment */ 716 1.4 rillig if (cond) /* comment */ 717 1.4 rillig if (cond) /* comment */ 718 1.4 rillig if (cond) /* comment */ 719 1.4 rillig code(); /* comment */ 720 1.4 rillig } 721 1.4 rillig //indent end 722 1.4 rillig 723 1.4 rillig 724 1.4 rillig //indent input 725 1.4 rillig /* 726 1.4 rillig * this 727 1.4 rillig * is a boxed 728 1.4 rillig * staircase. 729 1.4 rillig * 730 1.4 rillig * Its paragraphs get wrapped. 731 1.4 rillig 732 1.4 rillig There may also be 733 1.4 rillig lines without asterisks. 734 1.4 rillig 735 1.4 rillig */ 736 1.4 rillig //indent end 737 1.4 rillig 738 1.4 rillig //indent run 739 1.4 rillig /* 740 1.4 rillig * this is a boxed staircase. 741 1.4 rillig * 742 1.4 rillig * Its paragraphs get wrapped. 743 1.4 rillig * 744 1.4 rillig * There may also be lines without asterisks. 745 1.4 rillig * 746 1.4 rillig */ 747 1.4 rillig //indent end 748 1.4 rillig 749 1.4 rillig 750 1.4 rillig //indent input 751 1.4 rillig void loop(void) 752 1.4 rillig { 753 1.4 rillig while(cond)/*comment*/; 754 1.4 rillig 755 1.4 rillig while(cond) 756 1.4 rillig /*comment*/; 757 1.4 rillig } 758 1.4 rillig //indent end 759 1.4 rillig 760 1.4 rillig //indent run 761 1.4 rillig void 762 1.4 rillig loop(void) 763 1.4 rillig { 764 1.25 rillig while (cond) /* comment */ 765 1.25 rillig ; 766 1.4 rillig 767 1.4 rillig while (cond) 768 1.16 rillig /* comment */; 769 1.4 rillig } 770 1.4 rillig //indent end 771 1.4 rillig 772 1.4 rillig 773 1.4 rillig /* 774 1.4 rillig * The following comment starts really far to the right. To avoid that each 775 1.4 rillig * line only contains a single word, the maximum allowed line width is 776 1.4 rillig * extended such that each comment line may contain 22 characters. 777 1.4 rillig */ 778 1.4 rillig //indent input 779 1.4 rillig int global_variable_with_really_long_name_that_reaches_up_to_column_83; /* 1234567890123456789 1 1234567890123456789 12 1234567890123456789 123 1234567890123456789 1234 1234567890123456789 12345 1234567890123456789 123456 */ 780 1.4 rillig //indent end 781 1.4 rillig 782 1.4 rillig //indent run 783 1.4 rillig int global_variable_with_really_long_name_that_reaches_up_to_column_83; /* 1234567890123456789 1 784 1.4 rillig * 1234567890123456789 12 785 1.4 rillig * 1234567890123456789 786 1.4 rillig * 123 787 1.4 rillig * 1234567890123456789 788 1.4 rillig * 1234 789 1.4 rillig * 1234567890123456789 790 1.4 rillig * 12345 791 1.4 rillig * 1234567890123456789 792 1.4 rillig * 123456 */ 793 1.4 rillig //indent end 794 1.4 rillig 795 1.4 rillig 796 1.4 rillig /* 797 1.4 rillig * Demonstrates handling of line-end '//' comments. 798 1.4 rillig * 799 1.4 rillig * Even though this type of comments had been added in C99, indent didn't 800 1.4 rillig * support these comments until 2021 and instead messed up the code in 801 1.4 rillig * seemingly unpredictable ways. It treated any sequence of '/' as a binary 802 1.4 rillig * operator, no matter whether it was '/' or '//' or '/////'. 803 1.4 rillig */ 804 1.4 rillig //indent input 805 1.4 rillig int dummy // comment 806 1.4 rillig = // eq 807 1.4 rillig 1 // one 808 1.4 rillig + // plus 809 1.4 rillig 2;// two 810 1.4 rillig 811 1.4 rillig /////separator///// 812 1.4 rillig 813 1.4 rillig void function(void){} 814 1.4 rillig 815 1.4 rillig // Note: removing one of these line-end comments affected the formatting 816 1.4 rillig // of the main function below, before indent supported '//' comments. 817 1.4 rillig 818 1.4 rillig int 819 1.4 rillig main(void) 820 1.4 rillig { 821 1.4 rillig } 822 1.4 rillig //indent end 823 1.4 rillig 824 1.4 rillig //indent run 825 1.4 rillig int dummy // comment 826 1.4 rillig = // eq 827 1.4 rillig 1 // one 828 1.4 rillig + // plus 829 1.4 rillig 2; // two 830 1.4 rillig 831 1.4 rillig /////separator///// 832 1.4 rillig 833 1.4 rillig void 834 1.4 rillig function(void) 835 1.4 rillig { 836 1.4 rillig } 837 1.4 rillig 838 1.4 rillig // Note: removing one of these line-end comments affected the formatting 839 1.4 rillig // of the main function below, before indent supported '//' comments. 840 1.4 rillig 841 1.4 rillig int 842 1.4 rillig main(void) 843 1.4 rillig { 844 1.4 rillig } 845 1.4 rillig //indent end 846 1.4 rillig 847 1.4 rillig 848 1.4 rillig /* 849 1.4 rillig * Between March 2021 and October 2021, indent supported C99 comments only 850 1.4 rillig * very basically. It messed up the following code, repeating the identifier 851 1.4 rillig * 'bar' twice in a row. 852 1.4 rillig */ 853 1.4 rillig //indent input 854 1.4 rillig void c99_comment(void) 855 1.4 rillig { 856 1.4 rillig foo(); // C99 comment 857 1.4 rillig bar(); 858 1.4 rillig } 859 1.4 rillig //indent end 860 1.4 rillig 861 1.4 rillig //indent run 862 1.4 rillig void 863 1.4 rillig c99_comment(void) 864 1.4 rillig { 865 1.4 rillig foo(); // C99 comment 866 1.4 rillig bar(); 867 1.4 rillig } 868 1.4 rillig //indent end 869 1.4 rillig 870 1.4 rillig 871 1.3 rillig //indent input 872 1.4 rillig void 873 1.4 rillig comment_at_end_of_function(void) 874 1.4 rillig { 875 1.4 rillig if (cond) 876 1.4 rillig statement(); 877 1.4 rillig // comment 878 1.4 rillig } 879 1.3 rillig //indent end 880 1.1 rillig 881 1.3 rillig //indent run-equals-input 882 1.4 rillig 883 1.4 rillig 884 1.4 rillig //indent input 885 1.4 rillig int decl; 886 1.4 rillig // end-of-line comment at the end of the file 887 1.4 rillig //indent end 888 1.4 rillig 889 1.4 rillig //indent run-equals-input 890 1.4 rillig 891 1.4 rillig 892 1.4 rillig /* A form feed in the middle of a comment is an ordinary character. */ 893 1.4 rillig //indent input 894 1.4 rillig /* 895 1.4 rillig * AE 897 1.4 rillig */ 898 1.4 rillig /*-AE*/ 900 1.4 rillig //indent end 901 1.4 rillig 902 1.4 rillig //indent run-equals-input 903 1.4 rillig 904 1.13 rillig 905 1.13 rillig /* 906 1.4 rillig * Form feeds are seldom used, especially in comments, so treat them as an 907 1.4 rillig * ordinary character. 908 1.4 rillig */ 909 1.4 rillig //indent input 910 1.4 rillig /* comment*/ 912 1.4 rillig /*text* comment*/ 914 1.13 rillig //indent end 915 1.4 rillig 916 1.4 rillig //indent run 917 1.13 rillig /* comment */ 919 1.4 rillig /* text* comment */ 921 1.4 rillig //indent end 922 1.4 rillig 923 1.4 rillig //indent run-equals-prev-output -nsc 924 1.4 rillig 925 1.15 rillig //indent run-equals-input -nfc1 926 1.4 rillig 927 1.4 rillig 928 1.4 rillig /* 929 1.4 rillig * A completely empty line in a box comment must be copied unmodified to the 930 1.4 rillig * output. This is done in process_comment by adding a space to the end of an 931 1.4 rillig * otherwise empty comment. This space forces output_line to add some output, 932 1.4 rillig * but the trailing space is discarded, resulting in an empty line. 933 1.4 rillig */ 934 1.4 rillig //indent input 935 1.4 rillig /*- comment 936 1.4 rillig 937 1.4 rillig 938 1.4 rillig end */ 939 1.4 rillig //indent end 940 1.4 rillig 941 1.4 rillig //indent run-equals-input -nfc1 942 1.4 rillig 943 1.4 rillig 944 1.4 rillig //indent input 945 1.4 rillig /* comment comment comment comment mlute */ 946 1.4 rillig //indent end 947 1.4 rillig 948 1.4 rillig //indent run -l40 949 1.4 rillig /* 950 1.4 rillig * comment comment comment comment 951 1.4 rillig * mlute 952 1.4 rillig */ 953 1.4 rillig //indent end 954 1.4 rillig 955 1.4 rillig 956 1.4 rillig //indent input 957 1.4 rillig int f(void) 958 1.4 rillig { 959 1.4 rillig if (0) 960 1.4 rillig /* 12 1234 123 123456 1234 1234567 123 1234. */; 961 1.4 rillig } 962 1.4 rillig //indent end 963 1.4 rillig 964 1.4 rillig /* The comment is too long to fit in a single line. */ 965 1.4 rillig //indent run -l54 966 1.4 rillig int 967 1.16 rillig f(void) 968 1.4 rillig { 969 1.4 rillig if (0) 970 1.4 rillig /* 971 1.4 rillig * 12 1234 123 123456 1234 1234567 123 972 1.4 rillig * 1234. 973 1.4 rillig */; 974 1.4 rillig } 975 1.4 rillig //indent end 976 1.4 rillig 977 1.18 rillig /* The comment fits in a single line. */ 978 1.4 rillig //indent run 979 1.4 rillig int 980 1.4 rillig f(void) 981 1.4 rillig { 982 1.4 rillig if (0) 983 1.4 rillig /* 12 1234 123 123456 1234 1234567 123 1234. */; 984 1.4 rillig } 985 1.4 rillig //indent end 986 1.4 rillig 987 1.4 rillig 988 1.4 rillig /* 989 1.4 rillig * Test for an edge cases in comment handling, having a block comment inside 990 1.4 rillig * a line comment. Before NetBSD pr_comment.c 1.96 from 2021-11-04, indent 991 1.4 rillig * wrongly assumed that the comment would end at the '*' '/', tokenizing the 992 1.4 rillig * second word 'still' as a type_outside_parentheses. 993 1.4 rillig */ 994 1.4 rillig //indent input 995 1.4 rillig /* block comment */ 996 1.4 rillig // line comment /* still a line comment */ still a line comment 997 1.4 rillig //indent end 998 1.4 rillig 999 1.4 rillig //indent run-equals-input 1000 1.4 rillig 1001 1.4 rillig 1002 1.4 rillig /* 1003 1.4 rillig * Tests for comments that are not wrapped. 1004 1.4 rillig */ 1005 1.4 rillig //indent input 1006 1.4 rillig /*- tab space tab space */ 1007 1.4 rillig /*- very-long-word-that-cannot-be-broken very-long-word-that-cannot-be-broken */ 1008 1.4 rillig /*- very-long-word-that-cannot-be-broken very-long-word-that-cannot-be-broken */ 1009 1.4 rillig //indent end 1010 1.4 rillig 1011 1.4 rillig //indent run-equals-input -l5 1012 1.4 rillig 1013 1.4 rillig //indent run-equals-input -l32 1014 1.4 rillig 1015 1.4 rillig 1016 1.4 rillig /* 1017 1.4 rillig * Test for form feeds in nowrap comments. 1018 1.4 rillig */ 1019 1.4 rillig //indent input 1020 1.4 rillig /*-*/ 1022 1.21 rillig /*-<>*/ 1024 1.4 rillig //indent end 1025 1.4 rillig 1026 1.4 rillig //indent run-equals-input 1027 1.4 rillig 1028 1.4 rillig 1029 1.4 rillig /* 1030 1.4 rillig * In a comment that is wrapped, one or more empty lines separate paragraphs. 1031 1.4 rillig * All of these empty lines are preserved. 1032 1.4 rillig */ 1033 1.4 rillig //indent input 1034 1.4 rillig /* line 1 1035 1.4 rillig 1036 1.4 rillig 1037 1.4 rillig line 4 */ 1038 1.4 rillig //indent end 1039 1.4 rillig 1040 1.4 rillig //indent run 1041 1.4 rillig /* 1042 1.4 rillig * line 1 1043 1.4 rillig * 1044 1.4 rillig * 1045 1.4 rillig * line 4 1046 1.4 rillig */ 1047 1.4 rillig //indent end 1048 1.4 rillig 1049 1.4 rillig //indent run-equals-input -nfc1 1050 1.4 rillig 1051 1.4 rillig //indent run-equals-input -nfc1 -nsc 1052 1.4 rillig 1053 1.4 rillig //indent run -nsc 1054 1.4 rillig /* 1055 1.4 rillig line 1 1056 1.4 rillig 1057 1.4 rillig 1058 1.4 rillig line 4 1059 1.4 rillig */ 1060 1.4 rillig //indent end 1061 1.4 rillig 1062 1.4 rillig //indent run-equals-input -nsc -ncdb 1063 1.4 rillig 1064 1.4 rillig 1065 1.4 rillig /* 1066 1.4 rillig * Since 2019-04-04 and before pr_comment.c 1.123 from 2021-11-25, the 1067 1.4 rillig * function analyze_comment wrongly joined the two comments. 1068 1.4 rillig */ 1069 1.8 rillig //indent input 1070 1.8 rillig /* 1071 1.4 rillig *//* 1072 1.4 rillig join*/ 1073 1.4 rillig //indent end 1074 1.4 rillig 1075 1.4 rillig //indent run -nfc1 1076 1.4 rillig /* 1077 1.4 rillig */ 1078 1.4 rillig /* 1079 1.4 rillig * join 1080 1.4 rillig */ 1081 1.4 rillig //indent end 1082 1.4 rillig 1083 1.4 rillig 1084 1.4 rillig /* 1085 1.4 rillig * Since 2019-04-04 and before pr_comment.c 1.123 from 2021-11-25, the 1086 1.4 rillig * function analyze_comment generated malformed output by terminating the 1087 1.4 rillig * first comment but omitting the start of the second comment. 1088 1.4 rillig */ 1089 1.8 rillig //indent input 1090 1.8 rillig /* 1091 1.4 rillig *//* 1092 1.4 rillig error*/ 1093 1.4 rillig //indent end 1094 1.12 rillig 1095 1.12 rillig //indent run -nfc1 1096 1.12 rillig /* 1097 1.12 rillig */ 1098 1.12 rillig /* 1099 1.12 rillig * error 1100 1.12 rillig */ 1101 1.12 rillig //indent end 1102 1.12 rillig 1103 1.12 rillig 1104 1.12 rillig /* 1105 1.12 rillig * Ensure that there is exactly one space between the comment and the 1106 1.12 rillig * following binary operator. 1107 1.12 rillig */ 1108 1.12 rillig //indent input 1109 1.12 rillig { 1110 1.12 rillig a /* */ > b; 1111 1.12 rillig a>b; 1112 1.12 rillig } 1113 1.20 rillig //indent end 1114 1.20 rillig 1115 1.20 rillig //indent run 1116 1.20 rillig { 1117 1.20 rillig a /* */ > b; 1118 1.20 rillig a > b; 1119 1.20 rillig } 1120 1.20 rillig //indent end 1121 1.20 rillig 1122 1.20 rillig 1123 1.20 rillig /* 1124 1.20 rillig * Line comments are only related to a code snippet if they are on the same 1125 1.20 rillig * line; they cannot be continued in the next lines. 1126 1.20 rillig */ 1127 1.20 rillig //indent input 1128 1.20 rillig int line; // comment line 1 1129 1.20 rillig // comment line 2 1130 1.20 rillig int block; /* comment line 1 1131 1.20 rillig * comment line 2 1132 1.20 rillig */ 1133 1.21 rillig //indent end 1134 1.21 rillig 1135 1.24 rillig //indent run -di0 1136 1.21 rillig int line; // comment line 1 1137 1.21 rillig // $ XXX: This comment was probably intended to continue 'comment line 1'. 1138 1.21 rillig // comment line 2 1139 1.21 rillig int block; /* comment line 1 comment line 2 */ 1140 1.21 rillig //indent end 1141 1.21 rillig 1142 1.21 rillig 1143 1.21 rillig // Ensure that '/*/' is not interpreted as a complete comment. 1144 1.24 rillig //indent input 1145 1.22 rillig /*/ comment? or:not; /* */ 1146 1.22 rillig //indent end 1147 1.22 rillig 1148 1.22 rillig //indent run 1149 1.22 rillig /* / comment? or:not; /* */ 1150 1.22 rillig //indent end 1151 1.22 rillig 1152 1.22 rillig //indent run-equals-input -nfc1 1153 1.22 rillig 1154 1.22 rillig 1155 1.22 rillig /* 1156 1.22 rillig * The tokens '/' and '*' do not form a comment when they are separated by a 1157 1.22 rillig * space. 1158 1.22 rillig */ 1159 1.22 rillig //indent input 1160 1.22 rillig int a = b / *c; 1161 1.22 rillig // $ Indent can be tricked into treating '/' as a unary operator, thus turning 1162 1.22 rillig // $ some operators into the start of a comment. This only works in 1163 1.22 rillig // $ syntactically invalid text. 1164 1.22 rillig int a = b + / * c; 1165 1.22 rillig //indent end 1166 1.22 rillig 1167 1.22 rillig //indent run -di0 1168 1.22 rillig int a = b / *c; 1169 1.22 rillig // $ FIXME: Don't merge the two operators; there are enough situations where 1170 1.22 rillig // $ indent has to guess whether an operator is unary or binary, and these 1171 1.22 rillig // $ heuristics can go wrong. 1172 1.22 rillig int a = b + /*c; 1173 1.22 rillig //indent end 1174 1.22 rillig 1175 1.22 rillig 1176 1.22 rillig /* 1177 1.22 rillig * Ensure that tab characters that are broken into separate lines are replaced 1178 1.22 rillig * with spaces; other tabs are preserved. 1179 1.22 rillig */ 1180 1.22 rillig //indent input 1181 1.22 rillig /* word word word word word word word word word */ 1182 1.22 rillig //indent end 1183 1.22 rillig 1184 1.22 rillig //indent run -l38 1185 1.22 rillig /* 1186 1.22 rillig * word word word word word 1187 1.22 rillig * word word word word 1188 1.22 rillig */ 1189 1.22 rillig //indent end 1190 1.22 rillig 1191 1.22 rillig 1192 1.22 rillig /* In no-wrap comments, every single newline is preserved. */ 1193 1.22 rillig //indent input 1194 1.22 rillig /*- 1195 1.22 rillig paragraph 1 1196 1197 1198 1199 paragraph 2 1200 */ 1201 //indent end 1202 1203 //indent run-equals-input 1204