opt_eei.c revision 1.6 1 /* $NetBSD: opt_eei.c,v 1.6 2021/11/20 16:54:17 rillig Exp $ */
2 /* $FreeBSD$ */
3
4 /*
5 * Tests for the options '-eei' and '-neei'.
6 *
7 * The option '-eei' enables extra indentation on continuation lines of the
8 * expression part of 'if' and 'while' statements. These continuation lines
9 * are indented one extra level.
10 *
11 * The option '-neei' indents these conditions in the same way as all other
12 * continued statements.
13 */
14
15 #indent input
16 bool
17 less(int a, int b)
18 {
19 if (a <
20 b)
21 return true;
22 if (a
23 <
24 b)
25 return true;
26 }
27 #indent end
28
29 #indent run -eei
30 bool
31 less(int a, int b)
32 {
33 if (a <
34 b)
35 return true;
36 if (a
37 <
38 b)
39 return true;
40 }
41 #indent end
42
43 #indent run-equals-input -neei
44
45 /*
46 * When a single indentation level is the same as the continuation
47 * indentation, the code does not clearly show whether the 'b' belongs to the
48 * condition or the body statement.
49 */
50 #indent run -neei -i4
51 bool
52 less(int a, int b)
53 {
54 if (a <
55 b)
56 return true;
57 if (a
58 <
59 b)
60 return true;
61 }
62 #indent end
63
64 /*
65 * Adding the extra level of indentation is useful when the standard
66 * indentation is the same as the indentation of statement continuations. In
67 * such a case, the continued condition would have the same indentation as the
68 * following statement, which would be confusing.
69 */
70 #indent run -eei -i4
71 bool
72 less(int a, int b)
73 {
74 if (a <
75 b)
76 return true;
77 if (a
78 <
79 b)
80 return true;
81 }
82 #indent end
83
84 /*
85 * With an indentation size of 4, the width of the code 'if (' is exactly one
86 * indentation level. With the option '-nlp', the option '-eei' has no effect.
87 *
88 * XXX: This is unexpected since this creates the exact ambiguity that the
89 * option '-eei' is supposed to prevent.
90 */
91 #indent run -eei -i4 -nlp
92 bool
93 less(int a, int b)
94 {
95 if (a <
96 b)
97 return true;
98 if (a
99 <
100 b)
101 return true;
102 }
103 #indent end
104
105
106 /*
107 * The option '-eei' applies no matter whether the continued expression starts
108 * with a word or an operator like '&&'. The latter cannot start a statement,
109 * so there would be no ambiguity.
110 */
111 #indent input
112 {
113 if (a
114 && b)
115 stmt();
116 }
117 #indent end
118
119 /*
120 * XXX: The extra indentation is unnecessary since there is no possible
121 * confusion: the standard indentation is 8, the indentation of the continued
122 * condition could have stayed at 4.
123 */
124 #indent run -eei
125 {
126 if (a
127 && b)
128 stmt();
129 }
130 #indent end
131
132 /*
133 * The extra indentation is necessary here since otherwise the '&&' and the
134 * 'stmt()' would start at the same indentation.
135 */
136 #indent run -eei -i4
137 {
138 if (a
139 && b)
140 stmt();
141 }
142 #indent end
143
144 /*
145 * With an indentation size of 4, the width of the code 'if (' is exactly one
146 * indentation level. With the option '-nlp', the option '-eei' has no effect.
147 *
148 * XXX: This is unexpected since this creates the exact ambiguity that the
149 * option '-eei' is supposed to prevent.
150 */
151 #indent run -eei -i4 -nlp
152 {
153 if (a
154 && b)
155 stmt();
156 }
157 #indent end
158