opt_eei.c revision 1.5 1 /* $NetBSD: opt_eei.c,v 1.5 2021/11/07 08:03:15 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 the indentation level is the same as the continuation indentation, the
47 * indentation does not show the structure of the code.
48 */
49 #indent run -neei -i4
50 bool
51 less(int a, int b)
52 {
53 if (a <
54 b)
55 return true;
56 if (a
57 <
58 b)
59 return true;
60 }
61 #indent end
62
63 /*
64 * Adding the extra level of indentation is useful when the standard
65 * indentation is the same as the indentation of statement continuations. In
66 * such a case, the continued condition would have the same indentation as the
67 * following statement, which would be confusing.
68 */
69 #indent run -eei -i4
70 bool
71 less(int a, int b)
72 {
73 if (a <
74 b)
75 return true;
76 if (a
77 <
78 b)
79 return true;
80 }
81 #indent end
82
83 /*
84 * With an indentation size of 4, the width of the code 'if (' is exactly one
85 * indentation level. With the option '-nlp', the option '-eei' has no effect.
86 *
87 * XXX: This is unexpected since this creates the exact ambiguity that the
88 * option '-eei' is supposed to prevent.
89 */
90 #indent run -eei -i4 -nlp
91 bool
92 less(int a, int b)
93 {
94 if (a <
95 b)
96 return true;
97 if (a
98 <
99 b)
100 return true;
101 }
102 #indent end
103
104
105 /*
106 * The option '-eei' applies no matter whether the continued expression starts
107 * with a word or an operator like '&&'. The latter cannot start a statement,
108 * so there would be no ambiguity.
109 */
110 #indent input
111 {
112 if (a
113 && b)
114 stmt();
115 }
116 #indent end
117
118 /*
119 * XXX: The extra indentation is unnecessary since there is no possible
120 * confusion: the standard indentation is 8, the indentation of the continued
121 * condition could have stayed at 4.
122 */
123 #indent run -eei
124 {
125 if (a
126 && b)
127 stmt();
128 }
129 #indent end
130
131 /*
132 * The extra indentation is necessary here since otherwise the '&&' and the
133 * 'stmt()' would start at the same indentation.
134 */
135 #indent run -eei -i4
136 {
137 if (a
138 && b)
139 stmt();
140 }
141 #indent end
142
143 /*
144 * With an indentation size of 4, the width of the code 'if (' is exactly one
145 * indentation level. With the option '-nlp', the option '-eei' has no effect.
146 *
147 * XXX: This is unexpected since this creates the exact ambiguity that the
148 * option '-eei' is supposed to prevent.
149 */
150 #indent run -eei -i4 -nlp
151 {
152 if (a
153 && b)
154 stmt();
155 }
156 #indent end
157