1 1.9 rillig /* $NetBSD: opt_eei.c,v 1.9 2023/05/15 12:11:07 rillig Exp $ */ 2 1.1 rillig 3 1.3 rillig /* 4 1.3 rillig * Tests for the options '-eei' and '-neei'. 5 1.3 rillig * 6 1.3 rillig * The option '-eei' enables extra indentation on continuation lines of the 7 1.3 rillig * expression part of 'if' and 'while' statements. These continuation lines 8 1.9 rillig * are indented one extra level to avoid being confused for the first 9 1.9 rillig * statement of the body, even if the condition line starts with an operator 10 1.9 rillig * such as '&&' or '<' that could not start a statement. 11 1.3 rillig * 12 1.3 rillig * The option '-neei' indents these conditions in the same way as all other 13 1.3 rillig * continued statements. 14 1.3 rillig */ 15 1.3 rillig 16 1.8 rillig //indent input 17 1.9 rillig { 18 1.9 rillig if (a < 19 1.9 rillig b) 20 1.9 rillig stmt(); 21 1.9 rillig if (a 22 1.9 rillig < 23 1.9 rillig b) 24 1.9 rillig stmt(); 25 1.9 rillig while (a 26 1.9 rillig < b) 27 1.9 rillig stmt(); 28 1.9 rillig switch ( 29 1.9 rillig a) 30 1.9 rillig stmt(); 31 1.9 rillig } 32 1.9 rillig //indent end 33 1.9 rillig 34 1.9 rillig /* 35 1.9 rillig * By default, continuation lines are aligned on parentheses, and only a 36 1.9 rillig * multi-line switch statement would have ambiguous indentation. 37 1.9 rillig */ 38 1.9 rillig //indent run 39 1.1 rillig { 40 1.1 rillig if (a < 41 1.1 rillig b) 42 1.9 rillig stmt(); 43 1.1 rillig if (a 44 1.1 rillig < 45 1.1 rillig b) 46 1.9 rillig stmt(); 47 1.9 rillig while (a 48 1.9 rillig < b) 49 1.9 rillig stmt(); 50 1.9 rillig switch ( 51 1.9 rillig a) 52 1.9 rillig stmt(); 53 1.1 rillig } 54 1.8 rillig //indent end 55 1.1 rillig 56 1.9 rillig //indent run-equals-prev-output -neei 57 1.9 rillig 58 1.9 rillig /* 59 1.9 rillig * For indentation 8, the only expression that needs to be disambiguated is 60 1.9 rillig * the one from the switch statement. 61 1.9 rillig */ 62 1.8 rillig //indent run -eei 63 1.1 rillig { 64 1.1 rillig if (a < 65 1.9 rillig /* $ XXX: No extra indentation necessary. */ 66 1.1 rillig b) 67 1.9 rillig stmt(); 68 1.1 rillig if (a 69 1.9 rillig /* $ XXX: No extra indentation necessary. */ 70 1.1 rillig < 71 1.9 rillig /* $ XXX: No extra indentation necessary. */ 72 1.1 rillig b) 73 1.9 rillig stmt(); 74 1.9 rillig while (a 75 1.9 rillig /* $ XXX: No extra indentation necessary. */ 76 1.9 rillig < b) 77 1.9 rillig stmt(); 78 1.9 rillig switch ( 79 1.9 rillig a) 80 1.9 rillig stmt(); 81 1.1 rillig } 82 1.8 rillig //indent end 83 1.1 rillig 84 1.9 rillig /* For indentation 4, the expressions from the 'if' are ambiguous. */ 85 1.8 rillig //indent run -neei -i4 86 1.3 rillig { 87 1.3 rillig if (a < 88 1.3 rillig b) 89 1.9 rillig stmt(); 90 1.3 rillig if (a 91 1.3 rillig < 92 1.3 rillig b) 93 1.9 rillig stmt(); 94 1.9 rillig while (a 95 1.9 rillig < b) 96 1.9 rillig stmt(); 97 1.9 rillig switch ( 98 1.9 rillig a) 99 1.9 rillig stmt(); 100 1.3 rillig } 101 1.8 rillig //indent end 102 1.3 rillig 103 1.8 rillig //indent run -eei -i4 104 1.3 rillig { 105 1.3 rillig if (a < 106 1.3 rillig b) 107 1.9 rillig stmt(); 108 1.3 rillig if (a 109 1.3 rillig < 110 1.3 rillig b) 111 1.9 rillig stmt(); 112 1.9 rillig while (a 113 1.9 rillig /* $ XXX: No extra indentation necessary. */ 114 1.9 rillig < b) 115 1.9 rillig stmt(); 116 1.9 rillig switch ( 117 1.9 rillig /* $ XXX: No extra indentation necessary. */ 118 1.9 rillig a) 119 1.9 rillig stmt(); 120 1.3 rillig } 121 1.8 rillig //indent end 122 1.5 rillig 123 1.5 rillig /* 124 1.9 rillig * The -nlp option uses a fixed indentation for continuation lines. The if 125 1.9 rillig * statements are disambiguated. 126 1.5 rillig */ 127 1.8 rillig //indent run -eei -i4 -nlp 128 1.5 rillig { 129 1.5 rillig if (a < 130 1.9 rillig /* $ FIXME: Needs extra indentation. */ 131 1.5 rillig b) 132 1.9 rillig stmt(); 133 1.5 rillig if (a 134 1.9 rillig /* $ FIXME: Needs extra indentation. */ 135 1.5 rillig < 136 1.9 rillig /* $ FIXME: Needs extra indentation. */ 137 1.5 rillig b) 138 1.9 rillig stmt(); 139 1.9 rillig while (a 140 1.9 rillig /* $ FIXME: Needs extra indentation. */ 141 1.9 rillig < b) 142 1.9 rillig stmt(); 143 1.9 rillig switch ( 144 1.9 rillig /* $ FIXME: Needs extra indentation. */ 145 1.9 rillig a) 146 1.9 rillig stmt(); 147 1.5 rillig } 148 1.8 rillig //indent end 149 1.5 rillig 150 1.9 rillig /* With a continuation indentation of 2, there is no ambiguity at all. */ 151 1.9 rillig //indent run -eei -i6 -ci2 -nlp 152 1.5 rillig { 153 1.9 rillig if (a < 154 1.9 rillig b) 155 1.9 rillig stmt(); 156 1.9 rillig if (a 157 1.9 rillig < 158 1.9 rillig b) 159 1.9 rillig stmt(); 160 1.9 rillig while (a 161 1.9 rillig < b) 162 1.9 rillig stmt(); 163 1.9 rillig switch ( 164 1.9 rillig a) 165 1.5 rillig stmt(); 166 1.5 rillig } 167 1.8 rillig //indent end 168