opt_eei.c revision 1.12
1/* $NetBSD: opt_eei.c,v 1.12 2023/05/15 13:33:19 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 <
19b)
20		stmt();
21	if (a
22<
23b)
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	    b)
131	stmt();
132    if (a
133	    <
134	    b)
135	stmt();
136    while (a
137	    < b)
138	stmt();
139    switch (
140	    a)
141	stmt();
142}
143//indent end
144
145/* With a continuation indentation of 2, there is no ambiguity at all. */
146//indent run -eei -i6 -ci2 -nlp
147{
148      if (a <
149	b)
150	    stmt();
151      if (a
152	<
153	b)
154	    stmt();
155      while (a
156	< b)
157	    stmt();
158      switch (
159	a)
160	    stmt();
161}
162//indent end
163
164
165/*
166 * Ensure that after a condition with extra indentation, the following
167 * statements are not affected.
168 */
169//indent input
170{
171	if (
172		cond
173	)
174		stmt(
175			arg
176		);
177}
178//indent end
179
180//indent run -eei -nlp -i4
181{
182    if (
183	    cond
184	)
185	stmt(
186	    arg
187	    );
188}
189//indent end
190