/* $NetBSD: opt_eei.c,v 1.15 2023/06/15 09:19:07 rillig Exp $ */ /* * Tests for the options '-eei' and '-neei'. * * The option '-eei' enables extra indentation on continuation lines of the * expression part of 'if' and 'while' statements. These continuation lines * are indented one extra level to avoid being confused for the first * statement of the body, even if the condition line starts with an operator * such as '&&' or '<' that could not start a statement. * * The option '-neei' indents these conditions in the same way as all other * continued statements. */ //indent input { if (a < b) stmt(); if (a < b) stmt(); while (a < b) stmt(); switch ( a) stmt(); } //indent end /* * By default, continuation lines are aligned on parentheses, and only a * multi-line switch statement would have ambiguous indentation. */ //indent run { if (a < b) stmt(); if (a < b) stmt(); while (a < b) stmt(); switch ( a) stmt(); } //indent end //indent run-equals-prev-output -neei /* * For indentation 8, the only expression that needs to be disambiguated is * the one from the switch statement. */ //indent run -eei { if (a < b) stmt(); if (a < b) stmt(); while (a < b) stmt(); switch ( a) stmt(); } //indent end /* For indentation 4, the expressions from the 'if' are ambiguous. */ //indent run -neei -i4 { if (a < b) stmt(); if (a < b) stmt(); while (a < b) stmt(); switch ( a) stmt(); } //indent end //indent run -eei -i4 { if (a < b) stmt(); if (a < b) stmt(); while (a < b) stmt(); switch ( /* $ XXX: No extra indentation necessary. */ a) stmt(); } //indent end /* * The -nlp option uses a fixed indentation for continuation lines. The if * statements are disambiguated. */ //indent run -eei -i4 -nlp { if (a < b) stmt(); if (a < b) stmt(); while (a < b) stmt(); switch ( a) stmt(); } //indent end /* With a continuation indentation of 2, there is no ambiguity at all. */ //indent run -eei -i6 -ci2 -nlp { if (a < b) stmt(); if (a < b) stmt(); while (a < b) stmt(); switch ( a) stmt(); } //indent end /* * Ensure that after a condition with extra indentation, the following * statements are not affected. */ //indent input { if ( cond ) stmt( arg ); } //indent end //indent run -eei -nlp -i4 { if ( cond ) stmt( arg ); } //indent end /* * When multi-line expressions are aligned on the parentheses, they may have an * ambiguous indentation as well. */ //indent input { if (fun( 1, 2, 3)) stmt; } //indent end //indent run-equals-input //indent run -eei { if (fun( 1, 2, 3)) stmt; } //indent end //indent input { if ((( 3 ))) stmt; if (((( 4 )))) stmt; } //indent end //indent run -ci2 -nlp -eei { if ((( 3 ))) stmt; if (((( 4 )))) stmt; } //indent end