1 /* $NetBSD: fmt_else_comment.c,v 1.6 2023/06/23 20:44:51 rillig Exp $ */
2
3 /*
4 * Tests for comments after 'if (expr)' and 'else'. Before 2023-05-11, if the
5 * option '-br' was given (or rather, if '-bl' was not given), indent looked
6 * ahead to the following significant token to see whether it was a '{', it
7 * then moved the comments after the '{'. This token swapping was error-prone
8 * and thus removed.
9 *
10 * See also:
11 * FreeBSD r303484
12 * FreeBSD r309342
13 */
14
15 /*
16 * Before 2023-05-11, the two 'if' statements below exercised two different
17 * code paths, even though they look very similar.
18 */
19 //indent input
t(void)20 void t(void) {
21 if (1) /* a */ int a; else /* b */ int b;
22
23 if (1) /* a */
24 int a;
25 else /* b */
26 int b;
27 }
28 //indent end
29
30 //indent run
31 void
t(void)32 t(void)
33 {
34 if (1) /* a */
35 int a;
36 else /* b */
37 int b;
38
39 if (1) /* a */
40 int a;
41 else /* b */
42 int b;
43 }
44 //indent end
45
46
47 //indent input
t(void)48 void t(void) {
49 if (1) {
50
51 }
52
53
54
55 /* Old indent would remove the 3 blank lines above, awaiting "else". */
56 // $ 'Old' means something before 2019.
57
58 if (1) {
59 int a;
60 }
61
62
63 else if (0) {
64 int b;
65 }
66 /* test */
67 else
68 ;
69
70 if (1)
71 ;
72 else /* Old indent would get very confused here */
73 // $ 'Old' means something before 2019.
74 /* We also mustn't assume that there's only one comment */
75 /* before the left brace. */
76 {
77
78
79 }
80 }
81 //indent end
82
83 //indent run -bl
84 void
t(void)85 t(void)
86 {
87 if (1)
88 {
89
90 }
91
92
93
94 /*
95 * Old indent would remove the 3 blank lines above, awaiting "else".
96 */
97
98 if (1)
99 {
100 int a;
101 }
102
103
104 else if (0)
105 {
106 int b;
107 }
108 /* test */
109 else
110 ;
111
112 if (1)
113 ;
114 else /* Old indent would get very confused here */
115 /* We also mustn't assume that there's only one comment */
116 /* before the left brace. */
117 {
118
119
120 }
121 }
122 //indent end
123