opt_eei.c revision 1.9 1 /* $NetBSD: opt_eei.c,v 1.9 2023/05/15 12:11:07 rillig Exp $ */
2
3 /*
4 * Tests for the options '-eei' and '-neei'.
5 *
6 * The option '-eei' enables extra indentation on continuation lines of the
7 * expression part of 'if' and 'while' statements. These continuation lines
8 * are indented one extra level to avoid being confused for the first
9 * statement of the body, even if the condition line starts with an operator
10 * such as '&&' or '<' that could not start a statement.
11 *
12 * The option '-neei' indents these conditions in the same way as all other
13 * continued statements.
14 */
15
16 //indent input
17 {
18 if (a <
19 b)
20 stmt();
21 if (a
22 <
23 b)
24 stmt();
25 while (a
26 < b)
27 stmt();
28 switch (
29 a)
30 stmt();
31 }
32 //indent end
33
34 /*
35 * By default, continuation lines are aligned on parentheses, and only a
36 * multi-line switch statement would have ambiguous indentation.
37 */
38 //indent run
39 {
40 if (a <
41 b)
42 stmt();
43 if (a
44 <
45 b)
46 stmt();
47 while (a
48 < b)
49 stmt();
50 switch (
51 a)
52 stmt();
53 }
54 //indent end
55
56 //indent run-equals-prev-output -neei
57
58 /*
59 * For indentation 8, the only expression that needs to be disambiguated is
60 * the one from the switch statement.
61 */
62 //indent run -eei
63 {
64 if (a <
65 /* $ XXX: No extra indentation necessary. */
66 b)
67 stmt();
68 if (a
69 /* $ XXX: No extra indentation necessary. */
70 <
71 /* $ XXX: No extra indentation necessary. */
72 b)
73 stmt();
74 while (a
75 /* $ XXX: No extra indentation necessary. */
76 < b)
77 stmt();
78 switch (
79 a)
80 stmt();
81 }
82 //indent end
83
84 /* For indentation 4, the expressions from the 'if' are ambiguous. */
85 //indent run -neei -i4
86 {
87 if (a <
88 b)
89 stmt();
90 if (a
91 <
92 b)
93 stmt();
94 while (a
95 < b)
96 stmt();
97 switch (
98 a)
99 stmt();
100 }
101 //indent end
102
103 //indent run -eei -i4
104 {
105 if (a <
106 b)
107 stmt();
108 if (a
109 <
110 b)
111 stmt();
112 while (a
113 /* $ XXX: No extra indentation necessary. */
114 < b)
115 stmt();
116 switch (
117 /* $ XXX: No extra indentation necessary. */
118 a)
119 stmt();
120 }
121 //indent end
122
123 /*
124 * The -nlp option uses a fixed indentation for continuation lines. The if
125 * statements are disambiguated.
126 */
127 //indent run -eei -i4 -nlp
128 {
129 if (a <
130 /* $ FIXME: Needs extra indentation. */
131 b)
132 stmt();
133 if (a
134 /* $ FIXME: Needs extra indentation. */
135 <
136 /* $ FIXME: Needs extra indentation. */
137 b)
138 stmt();
139 while (a
140 /* $ FIXME: Needs extra indentation. */
141 < b)
142 stmt();
143 switch (
144 /* $ FIXME: Needs extra indentation. */
145 a)
146 stmt();
147 }
148 //indent end
149
150 /* With a continuation indentation of 2, there is no ambiguity at all. */
151 //indent run -eei -i6 -ci2 -nlp
152 {
153 if (a <
154 b)
155 stmt();
156 if (a
157 <
158 b)
159 stmt();
160 while (a
161 < b)
162 stmt();
163 switch (
164 a)
165 stmt();
166 }
167 //indent end
168