opt_eei.c revision 1.7
1/* $NetBSD: opt_eei.c,v 1.7 2022/04/22 21:21:20 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. 9 * 10 * The option '-neei' indents these conditions in the same way as all other 11 * continued statements. 12 */ 13 14#indent input 15bool 16less(int a, int b) 17{ 18 if (a < 19 b) 20 return true; 21 if (a 22 < 23 b) 24 return true; 25} 26#indent end 27 28#indent run -eei 29bool 30less(int a, int b) 31{ 32 if (a < 33 b) 34 return true; 35 if (a 36 < 37 b) 38 return true; 39} 40#indent end 41 42#indent run-equals-input -neei 43 44/* 45 * When a single indentation level is the same as the continuation 46 * indentation, the code does not clearly show whether the 'b' belongs to the 47 * condition or the body statement. 48 */ 49#indent run -neei -i4 50bool 51less(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 70bool 71less(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 91bool 92less(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