lsym_comment.c revision 1.22 1 1.22 rillig /* $NetBSD: lsym_comment.c,v 1.22 2023/06/17 22:09:24 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 * - wrap/nowrap comment containing '\b'
54 1.4 rillig */
55 1.4 rillig
56 1.4 rillig //indent input
57 1.4 rillig typedef enum x {
58 1.4 rillig aaaaaaaaaaaaaaaaaaaaaa = 1 << 0, /* test a */
59 1.4 rillig bbbbbbbbbbbbbbbbb = 1 << 1, /* test b */
60 1.4 rillig cccccccccccccc = 1 << 1, /* test c */
61 1.4 rillig dddddddddddddddddddddddddddddd = 1 << 2 /* test d */
62 1.4 rillig } x;
63 1.4 rillig //indent end
64 1.4 rillig
65 1.4 rillig //indent run-equals-input -bbb
66 1.4 rillig
67 1.4 rillig
68 1.4 rillig //indent input
69 1.4 rillig /* See FreeBSD r303597, r303598, r309219, and r309343 */
70 1.4 rillig void
71 1.4 rillig t(void) {
72 1.4 rillig /*
73 1.4 rillig * Old indent wrapped the URL near where this sentence ends.
74 1.4 rillig *
75 1.4 rillig * https://www.freebsd.org/cgi/man.cgi?query=indent&apropos=0&sektion=0&manpath=FreeBSD+12-current&arch=default&format=html
76 1.4 rillig */
77 1.4 rillig
78 1.4 rillig /*
79 1.4 rillig * The default maximum line length for comments is 78, and the 'kk' at
80 1.4 rillig * the end makes the line exactly 78 bytes long.
81 1.4 rillig *
82 1.4 rillig * aaaaaa bbbbbb cccccc dddddd eeeeee ffffff ggggg hhhhh iiiii jjjj kk
83 1.4 rillig */
84 1.4 rillig
85 1.4 rillig /*
86 1.4 rillig * Old indent unnecessarily removed the star comment continuation on the next line.
87 1.4 rillig *
88 1.4 rillig * *test*
89 1.4 rillig */
90 1.4 rillig
91 1.4 rillig /* r309219 Go through linked list, freeing from the malloced (t[-1]) address. */
92 1.4 rillig
93 1.4 rillig /* r309343 */
94 1.4 rillig }
95 1.4 rillig //indent end
96 1.4 rillig
97 1.4 rillig //indent run -bbb
98 1.4 rillig /* See FreeBSD r303597, r303598, r309219, and r309343 */
99 1.4 rillig void
100 1.4 rillig t(void)
101 1.4 rillig {
102 1.14 rillig
103 1.4 rillig /*
104 1.4 rillig * Old indent wrapped the URL near where this sentence ends.
105 1.4 rillig *
106 1.4 rillig * https://www.freebsd.org/cgi/man.cgi?query=indent&apropos=0&sektion=0&manpath=FreeBSD+12-current&arch=default&format=html
107 1.4 rillig */
108 1.4 rillig
109 1.4 rillig /*
110 1.4 rillig * The default maximum line length for comments is 78, and the 'kk' at
111 1.4 rillig * the end makes the line exactly 78 bytes long.
112 1.4 rillig *
113 1.4 rillig * aaaaaa bbbbbb cccccc dddddd eeeeee ffffff ggggg hhhhh iiiii jjjj kk
114 1.4 rillig */
115 1.4 rillig
116 1.4 rillig /*
117 1.4 rillig * Old indent unnecessarily removed the star comment continuation on
118 1.4 rillig * the next line.
119 1.4 rillig *
120 1.4 rillig * *test*
121 1.4 rillig */
122 1.4 rillig
123 1.4 rillig /*
124 1.4 rillig * r309219 Go through linked list, freeing from the malloced (t[-1])
125 1.4 rillig * address.
126 1.4 rillig */
127 1.4 rillig
128 1.4 rillig /* r309343 */
129 1.4 rillig }
130 1.4 rillig //indent end
131 1.4 rillig
132 1.4 rillig
133 1.4 rillig /*
134 1.4 rillig * The first Christmas tree is to the right of the code, therefore the comment
135 1.4 rillig * is moved to the code comment column; the follow-up lines of that comment
136 1.4 rillig * are moved by the same distance, to preserve the internal layout.
137 1.4 rillig *
138 1.4 rillig * The other Christmas tree is a standalone block comment, therefore the
139 1.4 rillig * comment starts in the code column.
140 1.4 rillig */
141 1.4 rillig //indent input
142 1.4 rillig {
143 1.15 rillig if (1) /*- a Christmas tree *
144 1.4 rillig ***
145 1.4 rillig ***** */
146 1.15 rillig /*- another one *
147 1.4 rillig ***
148 1.4 rillig ***** */
149 1.4 rillig 1;
150 1.4 rillig }
151 1.4 rillig //indent end
152 1.4 rillig
153 1.4 rillig //indent run -bbb
154 1.4 rillig {
155 1.15 rillig if (1) /*- a Christmas tree *
156 1.4 rillig ***
157 1.4 rillig ***** */
158 1.15 rillig /*- another one *
159 1.4 rillig ***
160 1.4 rillig ***** */
161 1.4 rillig 1;
162 1.4 rillig }
163 1.4 rillig //indent end
164 1.4 rillig
165 1.4 rillig
166 1.4 rillig /*
167 1.4 rillig * The first Christmas tree is to the right of the code, therefore the comment
168 1.4 rillig * is moved to the code comment column; the follow-up lines of that comment
169 1.4 rillig * are moved by the same distance, to preserve the internal layout.
170 1.4 rillig *
171 1.4 rillig * The other Christmas tree is a standalone block comment, therefore the
172 1.4 rillig * comment starts in the code column.
173 1.4 rillig */
174 1.4 rillig //indent input
175 1.4 rillig {
176 1.4 rillig if (7) { /*- a Christmas tree *
177 1.4 rillig ***
178 1.4 rillig ***** */
179 1.4 rillig /*- another one *
180 1.4 rillig ***
181 1.4 rillig ***** */
182 1.4 rillig stmt();
183 1.4 rillig }
184 1.4 rillig }
185 1.4 rillig //indent end
186 1.4 rillig
187 1.4 rillig //indent run -bbb
188 1.4 rillig {
189 1.4 rillig if (7) { /*- a Christmas tree *
190 1.4 rillig ***
191 1.4 rillig ***** */
192 1.4 rillig /*- another one *
193 1.4 rillig ***
194 1.4 rillig ***** */
195 1.4 rillig stmt();
196 1.4 rillig }
197 1.4 rillig }
198 1.4 rillig //indent end
199 1.4 rillig
200 1.4 rillig
201 1.4 rillig //indent input
202 1.4 rillig int decl;/*-fixed comment
203 1.4 rillig fixed comment*/
204 1.4 rillig //indent end
205 1.4 rillig
206 1.4 rillig //indent run -di0
207 1.4 rillig int decl; /*-fixed comment
208 1.4 rillig fixed comment*/
209 1.4 rillig //indent end
210 1.4 rillig /*
211 1.4 rillig * XXX: The second line of the above comment contains 11 spaces in a row,
212 1.4 rillig * instead of using as many tabs as possible.
213 1.4 rillig */
214 1.4 rillig
215 1.4 rillig
216 1.4 rillig //indent input
217 1.4 rillig {
218 1.15 rillig if (0)/*-first line |
219 1.15 rillig second line |*/
220 1.4 rillig ;
221 1.4 rillig }
222 1.4 rillig //indent end
223 1.4 rillig
224 1.4 rillig //indent run -di0
225 1.4 rillig {
226 1.15 rillig if (0) /*-first line |
227 1.15 rillig second line |*/
228 1.4 rillig ;
229 1.4 rillig }
230 1.4 rillig //indent end
231 1.4 rillig
232 1.4 rillig
233 1.4 rillig /*
234 1.4 rillig * Ensure that all text of the comment is preserved when the comment is moved
235 1.4 rillig * to the right.
236 1.4 rillig */
237 1.4 rillig //indent input
238 1.4 rillig int decl;/*-fixed comment
239 1.4 rillig 123456789ab fixed comment*/
240 1.4 rillig //indent end
241 1.4 rillig
242 1.4 rillig //indent run -di0
243 1.4 rillig int decl; /*-fixed comment
244 1.4 rillig 123456789ab fixed comment*/
245 1.4 rillig //indent end
246 1.4 rillig
247 1.4 rillig
248 1.4 rillig /*
249 1.4 rillig * Ensure that all text of the comment is preserved when the comment is moved
250 1.4 rillig * to the right.
251 1.4 rillig */
252 1.4 rillig //indent input
253 1.4 rillig {
254 1.15 rillig if(0)/*-first line
255 1.15 rillig 123456789ab second line |*/
256 1.4 rillig ;
257 1.4 rillig }
258 1.4 rillig //indent end
259 1.4 rillig
260 1.4 rillig //indent run -di0
261 1.4 rillig {
262 1.15 rillig if (0) /*-first line
263 1.15 rillig 123456789ab second line |*/
264 1.4 rillig ;
265 1.4 rillig }
266 1.4 rillig //indent end
267 1.4 rillig
268 1.4 rillig
269 1.4 rillig /*
270 1.4 rillig * Ensure that all text of the comment is preserved when the comment is moved
271 1.4 rillig * to the left. In this case, the internal layout of the comment cannot be
272 1.4 rillig * preserved since the second line already starts in column 1.
273 1.4 rillig */
274 1.4 rillig //indent input
275 1.4 rillig int decl; /*-|fixed comment
276 1.4 rillig | minus 12 |
277 1.4 rillig | tabs inside |
278 1.4 rillig |---|
279 1.4 rillig |-----------|
280 1.4 rillig tab1+++ tab2--- tab3+++ tab4--- tab5+++ tab6--- tab7+++fixed comment*/
281 1.4 rillig //indent end
282 1.4 rillig
283 1.4 rillig //indent run -di0
284 1.4 rillig int decl; /*-|fixed comment
285 1.4 rillig | minus 12 |
286 1.4 rillig | tabs inside |
287 1.4 rillig |---|
288 1.4 rillig |-----------|
289 1.4 rillig tab1+++ tab2--- tab3+++ tab4--- tab5+++ tab6--- tab7+++fixed comment*/
290 1.4 rillig //indent end
291 1.4 rillig
292 1.4 rillig
293 1.4 rillig /*
294 1.4 rillig * Ensure that all text of the comment is preserved when the comment is moved
295 1.4 rillig * to the left. In this case, the internal layout of the comment cannot be
296 1.4 rillig * preserved since the second line already starts in column 1.
297 1.4 rillig */
298 1.4 rillig //indent input
299 1.4 rillig {
300 1.15 rillig if(0) /*-|first line
301 1.4 rillig | minus 12 |
302 1.4 rillig | tabs inside |
303 1.4 rillig |---|
304 1.4 rillig |-----------|
305 1.4 rillig tab1+++ tab2--- tab3+++ tab4--- tab5+++ tab6--- tab7+++fixed comment*/
306 1.4 rillig ;
307 1.4 rillig }
308 1.4 rillig //indent end
309 1.4 rillig
310 1.4 rillig //indent run -di0
311 1.4 rillig {
312 1.15 rillig if (0) /*-|first line
313 1.4 rillig | minus 12 |
314 1.4 rillig | tabs inside |
315 1.4 rillig |---|
316 1.4 rillig |-----------|
317 1.4 rillig tab1+++ tab2--- tab3+++ tab4--- tab5+++ tab6--- tab7+++fixed comment*/
318 1.4 rillig ;
319 1.4 rillig }
320 1.4 rillig //indent end
321 1.4 rillig
322 1.4 rillig
323 1.4 rillig /*
324 1.15 rillig * Ensure that '{' after a comment is preserved.
325 1.4 rillig */
326 1.4 rillig //indent input
327 1.4 rillig {
328 1.4 rillig if(0)/*comment*/{
329 1.4 rillig }
330 1.4 rillig }
331 1.4 rillig //indent end
332 1.4 rillig
333 1.15 rillig /* Before 2023-05-11, the comment and the '{' swapped places. */
334 1.4 rillig //indent run
335 1.4 rillig {
336 1.5 rillig if (0) /* comment */ {
337 1.4 rillig }
338 1.4 rillig }
339 1.4 rillig //indent end
340 1.4 rillig
341 1.4 rillig
342 1.4 rillig /*
343 1.4 rillig * The following comments test line breaking when the comment ends with a
344 1.4 rillig * space.
345 1.4 rillig */
346 1.4 rillig //indent input
347 1.4 rillig /* 456789 123456789 123456789 12345 */
348 1.4 rillig /* 456789 123456789 123456789 123456 */
349 1.4 rillig /* 456789 123456789 123456789 1234567 */
350 1.4 rillig /* 456789 123456789 123456789 12345678 */
351 1.4 rillig /* 456789 123456789 123456789 123456789 */
352 1.4 rillig //indent end
353 1.4 rillig
354 1.4 rillig //indent run -l38
355 1.4 rillig /* 456789 123456789 123456789 12345 */
356 1.4 rillig /*
357 1.4 rillig * 456789 123456789 123456789 123456
358 1.4 rillig */
359 1.4 rillig /*
360 1.4 rillig * 456789 123456789 123456789 1234567
361 1.4 rillig */
362 1.4 rillig /*
363 1.4 rillig * 456789 123456789 123456789 12345678
364 1.4 rillig */
365 1.4 rillig /*
366 1.4 rillig * 456789 123456789 123456789
367 1.4 rillig * 123456789
368 1.4 rillig */
369 1.4 rillig //indent end
370 1.4 rillig
371 1.4 rillig
372 1.4 rillig /*
373 1.18 rillig * When determining whether the comment fits in a single line, only the first
374 1.18 rillig * trailing space or tab is kept, the others are removed.
375 1.17 rillig */
376 1.17 rillig //indent input
377 1.18 rillig /* tab: */
378 1.17 rillig /* 456789 123456789 123456789 12345 */
379 1.17 rillig /* 456789 123456789 123456789 123456 */
380 1.18 rillig /* space: */
381 1.18 rillig /* 456789 123456789 123456789 12345 */
382 1.18 rillig /* 456789 123456789 123456789 123456 */
383 1.17 rillig //indent end
384 1.17 rillig
385 1.17 rillig //indent run -l38
386 1.18 rillig /* tab: */
387 1.17 rillig /*
388 1.17 rillig * 456789 123456789 123456789 12345
389 1.17 rillig */
390 1.17 rillig /*
391 1.17 rillig * 456789 123456789 123456789 123456
392 1.17 rillig */
393 1.18 rillig /* space: */
394 1.18 rillig /* 456789 123456789 123456789 12345 */
395 1.18 rillig /*
396 1.18 rillig * 456789 123456789 123456789 123456
397 1.18 rillig */
398 1.17 rillig //indent end
399 1.17 rillig
400 1.17 rillig
401 1.17 rillig /*
402 1.4 rillig * The following comments test line breaking when the comment does not end
403 1.4 rillig * with a space. Since indent adds a trailing space to a single-line comment,
404 1.4 rillig * this space has to be taken into account when computing the line length.
405 1.4 rillig */
406 1.4 rillig //indent input
407 1.4 rillig /* x . line length 35*/
408 1.4 rillig /* x .. line length 36*/
409 1.4 rillig /* x ... line length 37*/
410 1.4 rillig /* x .... line length 38*/
411 1.4 rillig /* x ..... line length 39*/
412 1.4 rillig /* x ...... line length 40*/
413 1.4 rillig /* x ....... line length 41*/
414 1.4 rillig /* x ........ line length 42*/
415 1.4 rillig //indent end
416 1.4 rillig
417 1.4 rillig //indent run -l38
418 1.4 rillig /* x . line length 35 */
419 1.4 rillig /* x .. line length 36 */
420 1.4 rillig /* x ... line length 37 */
421 1.4 rillig /* x .... line length 38 */
422 1.4 rillig /*
423 1.4 rillig * x ..... line length 39
424 1.4 rillig */
425 1.4 rillig /*
426 1.4 rillig * x ...... line length 40
427 1.4 rillig */
428 1.4 rillig /*
429 1.4 rillig * x ....... line length 41
430 1.4 rillig */
431 1.4 rillig /*
432 1.4 rillig * x ........ line length 42
433 1.4 rillig */
434 1.4 rillig //indent end
435 1.4 rillig
436 1.4 rillig
437 1.4 rillig /*
438 1.4 rillig * The different types of comments that indent distinguishes, starting in
439 1.4 rillig * column 1 (see options '-fc1' and '-nfc1').
440 1.4 rillig */
441 1.4 rillig //indent input
442 1.4 rillig /* This is a traditional C block comment. */
443 1.4 rillig
444 1.4 rillig // This is a C99 line comment.
445 1.4 rillig
446 1.4 rillig /*
447 1.4 rillig * This is a box comment since its first line (the one above this line) is
448 1.4 rillig * empty.
449 1.4 rillig *
450 1.4 rillig *
451 1.4 rillig *
452 1.4 rillig * Its text gets wrapped.
453 1.4 rillig * Empty lines serve as paragraphs.
454 1.4 rillig */
455 1.4 rillig
456 1.4 rillig /**
457 1.4 rillig * This is a box comment
458 1.4 rillig * that is not re-wrapped.
459 1.4 rillig */
460 1.4 rillig
461 1.4 rillig /*-
462 1.4 rillig * This is a box comment
463 1.4 rillig * that is not re-wrapped.
464 1.4 rillig * It is often used for copyright declarations.
465 1.4 rillig */
466 1.4 rillig //indent end
467 1.4 rillig
468 1.4 rillig //indent run
469 1.4 rillig /* This is a traditional C block comment. */
470 1.4 rillig
471 1.4 rillig // This is a C99 line comment.
472 1.4 rillig
473 1.4 rillig /*
474 1.4 rillig * This is a box comment since its first line (the one above this line) is
475 1.4 rillig * empty.
476 1.4 rillig *
477 1.4 rillig *
478 1.4 rillig *
479 1.4 rillig * Its text gets wrapped. Empty lines serve as paragraphs.
480 1.4 rillig */
481 1.4 rillig
482 1.4 rillig /**
483 1.4 rillig * This is a box comment
484 1.4 rillig * that is not re-wrapped.
485 1.4 rillig */
486 1.4 rillig
487 1.4 rillig /*-
488 1.4 rillig * This is a box comment
489 1.4 rillig * that is not re-wrapped.
490 1.4 rillig * It is often used for copyright declarations.
491 1.4 rillig */
492 1.4 rillig //indent end
493 1.4 rillig
494 1.4 rillig
495 1.4 rillig /*
496 1.4 rillig * The different types of comments that indent distinguishes, starting in
497 1.4 rillig * column 9, so they are independent of the option '-fc1'.
498 1.4 rillig */
499 1.4 rillig //indent input
500 1.4 rillig void
501 1.4 rillig function(void)
502 1.4 rillig {
503 1.4 rillig /* This is a traditional C block comment. */
504 1.4 rillig
505 1.4 rillig /*
506 1.4 rillig * This is a box comment.
507 1.4 rillig *
508 1.4 rillig * It starts in column 9, not 1,
509 1.4 rillig * therefore it gets re-wrapped.
510 1.4 rillig */
511 1.4 rillig
512 1.4 rillig /**
513 1.4 rillig * This is a box comment
514 1.4 rillig * that is not re-wrapped, even though it starts in column 9, not 1.
515 1.4 rillig */
516 1.4 rillig
517 1.4 rillig /*-
518 1.4 rillig * This is a box comment
519 1.4 rillig * that is not re-wrapped.
520 1.4 rillig */
521 1.4 rillig }
522 1.4 rillig //indent end
523 1.4 rillig
524 1.4 rillig //indent run
525 1.4 rillig void
526 1.4 rillig function(void)
527 1.4 rillig {
528 1.4 rillig /* This is a traditional C block comment. */
529 1.4 rillig
530 1.4 rillig /*
531 1.4 rillig * This is a box comment.
532 1.4 rillig *
533 1.4 rillig * It starts in column 9, not 1, therefore it gets re-wrapped.
534 1.4 rillig */
535 1.4 rillig
536 1.4 rillig /**
537 1.4 rillig * This is a box comment
538 1.4 rillig * that is not re-wrapped, even though it starts in column 9, not 1.
539 1.4 rillig */
540 1.4 rillig
541 1.4 rillig /*-
542 1.4 rillig * This is a box comment
543 1.4 rillig * that is not re-wrapped.
544 1.4 rillig */
545 1.4 rillig }
546 1.4 rillig //indent end
547 1.4 rillig
548 1.4 rillig
549 1.4 rillig /*
550 1.4 rillig * Comments to the right of declarations.
551 1.4 rillig */
552 1.4 rillig //indent input
553 1.4 rillig void
554 1.4 rillig function(void)
555 1.4 rillig {
556 1.4 rillig int decl; /* declaration comment */
557 1.4 rillig
558 1.4 rillig int decl; /* short
559 1.4 rillig * multi-line
560 1.4 rillig * declaration
561 1.4 rillig * comment */
562 1.4 rillig
563 1.4 rillig int decl; /* long single-line declaration comment that is longer than the allowed line width */
564 1.4 rillig
565 1.4 rillig int decl; /* long multi-line declaration comment
566 1.4 rillig * that is longer than
567 1.4 rillig * the allowed line width */
568 1.4 rillig
569 1.4 rillig int decl; // C99 declaration comment
570 1.4 rillig
571 1.4 rillig {
572 1.4 rillig int decl; /* indented declaration */
573 1.4 rillig {
574 1.4 rillig int decl; /* indented declaration */
575 1.4 rillig {
576 1.4 rillig int decl; /* indented declaration */
577 1.4 rillig {
578 1.4 rillig int decl; /* indented declaration */
579 1.4 rillig }
580 1.4 rillig }
581 1.4 rillig }
582 1.4 rillig }
583 1.4 rillig }
584 1.4 rillig //indent end
585 1.4 rillig
586 1.4 rillig //indent run -ldi0
587 1.4 rillig void
588 1.4 rillig function(void)
589 1.4 rillig {
590 1.4 rillig int decl; /* declaration comment */
591 1.4 rillig
592 1.4 rillig int decl; /* short multi-line declaration comment */
593 1.4 rillig
594 1.4 rillig int decl; /* long single-line declaration comment that
595 1.4 rillig * is longer than the allowed line width */
596 1.4 rillig
597 1.4 rillig int decl; /* long multi-line declaration comment that is
598 1.4 rillig * longer than the allowed line width */
599 1.4 rillig
600 1.4 rillig int decl; // C99 declaration comment
601 1.4 rillig
602 1.4 rillig {
603 1.4 rillig int decl; /* indented declaration */
604 1.4 rillig {
605 1.4 rillig int decl; /* indented declaration */
606 1.4 rillig {
607 1.4 rillig int decl; /* indented declaration */
608 1.4 rillig {
609 1.11 rillig // $ This comment is indented so far to the right that it may overshoot the
610 1.11 rillig // $ right margin. The allowed line length is increased to the starting
611 1.11 rillig // $ indentation of 56 plus a fixed amount of 25 columns, resulting in 81.
612 1.11 rillig // $ The trailing '*' would fit, but the trailing '/' is too much.
613 1.11 rillig int decl; /* indented declaration
614 1.11 rillig */
615 1.4 rillig }
616 1.4 rillig }
617 1.4 rillig }
618 1.4 rillig }
619 1.4 rillig }
620 1.4 rillig //indent end
621 1.4 rillig
622 1.4 rillig
623 1.4 rillig /*
624 1.4 rillig * Comments to the right of code.
625 1.4 rillig */
626 1.4 rillig //indent input
627 1.4 rillig void
628 1.4 rillig function(void)
629 1.4 rillig {
630 1.4 rillig code(); /* code comment */
631 1.4 rillig code(); /* code comment _________ to line length 78 */
632 1.4 rillig code(); /* code comment __________ to line length 79 */
633 1.4 rillig code(); /* code comment ___________ to line length 80 */
634 1.4 rillig code(); /* code comment ____________ to line length 81 */
635 1.4 rillig code(); /* code comment _____________ to line length 82 */
636 1.4 rillig
637 1.4 rillig /* $ In the following comments, the line length is measured after formatting. */
638 1.4 rillig code(); /* code comment _________ to line length 78*/
639 1.4 rillig code(); /* code comment __________ to line length 79*/
640 1.4 rillig code(); /* code comment ___________ to line length 80*/
641 1.4 rillig code(); /* code comment ____________ to line length 81*/
642 1.4 rillig code(); /* code comment _____________ to line length 82*/
643 1.4 rillig
644 1.4 rillig code(); /* short
645 1.4 rillig * multi-line
646 1.4 rillig * code
647 1.4 rillig * comment */
648 1.4 rillig
649 1.4 rillig code(); /* long single-line code comment that is longer than the allowed line width */
650 1.4 rillig
651 1.4 rillig code(); /* long multi-line code comment
652 1.4 rillig * that is longer than
653 1.4 rillig * the allowed line width */
654 1.4 rillig
655 1.4 rillig code(); // C99 code comment
656 1.4 rillig code(); // C99 code comment ________ to line length 78
657 1.4 rillig code(); // C99 code comment _________ to line length 79
658 1.4 rillig code(); // C99 code comment __________ to line length 80
659 1.4 rillig code(); // C99 code comment ___________ to line length 81
660 1.4 rillig code(); // C99 code comment ____________ to line length 82
661 1.4 rillig
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 if (cond) /* comment */
667 1.4 rillig code(); /* comment */
668 1.4 rillig }
669 1.4 rillig //indent end
670 1.4 rillig
671 1.11 rillig //indent run -l78
672 1.4 rillig void
673 1.4 rillig function(void)
674 1.4 rillig {
675 1.4 rillig code(); /* code comment */
676 1.4 rillig code(); /* code comment _________ to line length 78 */
677 1.11 rillig code(); /* code comment __________ to line length 79
678 1.11 rillig */
679 1.11 rillig code(); /* code comment ___________ to line length 80
680 1.11 rillig */
681 1.11 rillig code(); /* code comment ____________ to line length 81
682 1.11 rillig */
683 1.4 rillig code(); /* code comment _____________ to line length
684 1.4 rillig * 82 */
685 1.4 rillig
686 1.4 rillig /* $ In the following comments, the line length is measured after formatting. */
687 1.4 rillig code(); /* code comment _________ to line length 78 */
688 1.11 rillig code(); /* code comment __________ to line length 79
689 1.11 rillig */
690 1.11 rillig code(); /* code comment ___________ to line length 80
691 1.11 rillig */
692 1.11 rillig code(); /* code comment ____________ to line length 81
693 1.11 rillig */
694 1.4 rillig code(); /* code comment _____________ to line length
695 1.4 rillig * 82 */
696 1.4 rillig
697 1.4 rillig code(); /* short multi-line code comment */
698 1.4 rillig
699 1.4 rillig code(); /* long single-line code comment that is
700 1.4 rillig * longer than the allowed line width */
701 1.4 rillig
702 1.4 rillig code(); /* long multi-line code comment that is longer
703 1.4 rillig * than the allowed line width */
704 1.4 rillig
705 1.4 rillig /* $ Trailing C99 comments are not wrapped, as indent would not correctly */
706 1.4 rillig /* $ recognize the continuation lines as continued comments. For block */
707 1.4 rillig /* $ comments this works since the comment has not ended yet. */
708 1.4 rillig code(); // C99 code comment
709 1.4 rillig code(); // C99 code comment ________ to line length 78
710 1.4 rillig code(); // C99 code comment _________ to line length 79
711 1.4 rillig code(); // C99 code comment __________ to line length 80
712 1.4 rillig code(); // C99 code comment ___________ to line length 81
713 1.4 rillig code(); // C99 code comment ____________ to line length 82
714 1.4 rillig
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 if (cond) /* comment */
720 1.4 rillig code(); /* comment */
721 1.4 rillig }
722 1.4 rillig //indent end
723 1.4 rillig
724 1.4 rillig
725 1.4 rillig //indent input
726 1.4 rillig /*
727 1.4 rillig * this
728 1.4 rillig * is a boxed
729 1.4 rillig * staircase.
730 1.4 rillig *
731 1.4 rillig * Its paragraphs get wrapped.
732 1.4 rillig
733 1.4 rillig There may also be
734 1.4 rillig lines without asterisks.
735 1.4 rillig
736 1.4 rillig */
737 1.4 rillig //indent end
738 1.4 rillig
739 1.4 rillig //indent run
740 1.4 rillig /*
741 1.4 rillig * this is a boxed staircase.
742 1.4 rillig *
743 1.4 rillig * Its paragraphs get wrapped.
744 1.4 rillig *
745 1.4 rillig * There may also be lines without asterisks.
746 1.4 rillig *
747 1.4 rillig */
748 1.4 rillig //indent end
749 1.4 rillig
750 1.4 rillig
751 1.4 rillig //indent input
752 1.4 rillig void loop(void)
753 1.4 rillig {
754 1.4 rillig while(cond)/*comment*/;
755 1.4 rillig
756 1.4 rillig while(cond)
757 1.4 rillig /*comment*/;
758 1.4 rillig }
759 1.4 rillig //indent end
760 1.4 rillig
761 1.4 rillig //indent run
762 1.4 rillig void
763 1.4 rillig loop(void)
764 1.4 rillig {
765 1.16 rillig while (cond) /* comment */;
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.21 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 //indent input
1144 1.21 rillig /*/ comment? or:not; /* */
1145 1.21 rillig //indent end
1146 1.21 rillig
1147 1.22 rillig //indent run
1148 1.22 rillig /* / comment? or:not; /* */
1149 1.22 rillig //indent end
1150 1.22 rillig
1151 1.22 rillig //indent run -nfc1
1152 1.22 rillig // $ FIXME: It's a comment, not code.
1153 1.22 rillig /*/ comment ? or : not; /* */
1154 1.22 rillig //indent end
1155 1.22 rillig
1156 1.22 rillig
1157 1.22 rillig /*
1158 1.22 rillig * The tokens '/' and '*' do not form a comment when they are separated by a
1159 1.22 rillig * space.
1160 1.22 rillig */
1161 1.22 rillig //indent input
1162 1.22 rillig int a = b / *c;
1163 1.22 rillig // $ Indent can be tricked into treating '/' as a unary operator, thus turning
1164 1.22 rillig // $ some operators into the start of a comment. This only works in
1165 1.22 rillig // $ syntactically invalid text.
1166 1.22 rillig int a = b + / * c;
1167 1.22 rillig //indent end
1168 1.22 rillig
1169 1.22 rillig //indent run -di0
1170 1.22 rillig int a = b / *c;
1171 1.22 rillig // $ FIXME: Don't merge the two operators; there are enough situations where
1172 1.22 rillig // $ indent has to guess whether an operator is unary or binary, and these
1173 1.22 rillig // $ heuristics can go wrong.
1174 1.22 rillig int a = b + /*c;
1175 1.22 rillig //indent end
1176 1.22 rillig
1177 1.22 rillig
1178 1.22 rillig /*
1179 1.22 rillig * Ensure that tab characters that are broken into separate lines are replaced
1180 1.22 rillig * with spaces; other tabs are preserved.
1181 1.22 rillig */
1182 1.22 rillig //indent input
1183 1.22 rillig /* word word word word word word word word word */
1184 1.22 rillig //indent end
1185 1.22 rillig
1186 1.22 rillig //indent run -l38
1187 1.22 rillig /*
1188 1.22 rillig * word word word word word
1189 1.22 rillig * word word word word
1190 1.22 rillig */
1191 1.22 rillig //indent end
1192 1.22 rillig
1193 1.22 rillig
1194 1.22 rillig /* In no-wrap comments, every single newline is preserved. */
1195 1.22 rillig //indent input
1196 1.22 rillig /*-
1197 1.22 rillig paragraph 1
1198
1199
1200
1201 paragraph 2
1202 */
1203 //indent end
1204
1205 //indent run-equals-input
1206