1 1.14 rillig /* $NetBSD: opt_badp.c,v 1.14 2023/06/26 20:03:09 rillig Exp $ */ 2 1.1 rillig 3 1.2 rillig /* 4 1.2 rillig * Tests for the options '-badp' and '-nbadp'. 5 1.2 rillig * 6 1.12 rillig * The option '-badp' forces a blank line between the first set of declarations 7 1.12 rillig * in a function and the next comment or statement. It produces a blank line 8 1.12 rillig * even if there are no declarations. 9 1.2 rillig */ 10 1.2 rillig 11 1.13 rillig 12 1.13 rillig /* An empty function body does not need a blank line. */ 13 1.9 rillig //indent input 14 1.5 rillig void 15 1.6 rillig empty(void) 16 1.1 rillig { 17 1.1 rillig } 18 1.9 rillig //indent end 19 1.5 rillig 20 1.9 rillig //indent run-equals-input -badp 21 1.8 rillig 22 1.9 rillig //indent run-equals-input -nbadp 23 1.1 rillig 24 1.5 rillig 25 1.13 rillig /* If an empty function body already has a blank line, it is kept. */ 26 1.9 rillig //indent input 27 1.5 rillig void 28 1.6 rillig blank(void) 29 1.1 rillig { 30 1.5 rillig 31 1.1 rillig } 32 1.9 rillig //indent end 33 1.1 rillig 34 1.9 rillig //indent run-equals-input -badp 35 1.8 rillig 36 1.9 rillig //indent run-equals-input -nbadp 37 1.1 rillig 38 1.1 rillig 39 1.13 rillig /* 40 1.13 rillig * If a function body has only declarations (doesn't occur in practice), it 41 1.13 rillig * does not need an empty line. 42 1.13 rillig */ 43 1.9 rillig //indent input 44 1.5 rillig void 45 1.6 rillig declaration(void) 46 1.1 rillig { 47 1.5 rillig int decl; 48 1.5 rillig } 49 1.9 rillig //indent end 50 1.1 rillig 51 1.9 rillig //indent run-equals-input -badp 52 1.8 rillig 53 1.9 rillig //indent run-equals-input -nbadp 54 1.1 rillig 55 1.1 rillig 56 1.13 rillig /* 57 1.13 rillig * A function body without declarations gets an empty line above the first 58 1.13 rillig * statement. 59 1.13 rillig */ 60 1.9 rillig //indent input 61 1.5 rillig void 62 1.6 rillig statement(void) 63 1.5 rillig { 64 1.5 rillig stmt(); 65 1.1 rillig } 66 1.9 rillig //indent end 67 1.1 rillig 68 1.14 rillig //indent run -badp 69 1.14 rillig void 70 1.14 rillig statement(void) 71 1.14 rillig { 72 1.14 rillig 73 1.14 rillig stmt(); 74 1.14 rillig } 75 1.14 rillig //indent end 76 1.8 rillig 77 1.9 rillig //indent run-equals-input -nbadp 78 1.5 rillig 79 1.1 rillig 80 1.13 rillig /* 81 1.13 rillig * A function body with a declaration and a statement gets a blank line between 82 1.13 rillig * those. 83 1.13 rillig */ 84 1.9 rillig //indent input 85 1.5 rillig void 86 1.6 rillig declaration_statement(void) 87 1.5 rillig { 88 1.5 rillig int decl; 89 1.5 rillig stmt(); 90 1.5 rillig } 91 1.9 rillig //indent end 92 1.5 rillig 93 1.9 rillig //indent run -badp 94 1.5 rillig void 95 1.6 rillig declaration_statement(void) 96 1.1 rillig { 97 1.5 rillig int decl; 98 1.14 rillig 99 1.5 rillig stmt(); 100 1.1 rillig } 101 1.9 rillig //indent end 102 1.8 rillig 103 1.9 rillig //indent run-equals-input -nbadp 104 1.1 rillig 105 1.5 rillig 106 1.13 rillig /* If there already is a blank line in the right place, it is kept. */ 107 1.9 rillig //indent input 108 1.1 rillig static void 109 1.5 rillig declaration_blank_statement(void) 110 1.1 rillig { 111 1.5 rillig int decl; 112 1.1 rillig 113 1.5 rillig stmt(); 114 1.1 rillig } 115 1.9 rillig //indent end 116 1.5 rillig 117 1.9 rillig //indent run-equals-input -badp 118 1.8 rillig 119 1.9 rillig //indent run-equals-input -nbadp 120 1.1 rillig 121 1.5 rillig 122 1.13 rillig /* Additional blank lines are kept. To remove them, see the '-sob' option. */ 123 1.9 rillig //indent input 124 1.1 rillig static void 125 1.5 rillig declaration_blank_blank_statement(void) 126 1.1 rillig { 127 1.5 rillig int decl; 128 1.1 rillig 129 1.1 rillig 130 1.1 rillig 131 1.5 rillig stmt(); 132 1.1 rillig } 133 1.9 rillig //indent end 134 1.1 rillig 135 1.9 rillig //indent run-equals-input -badp 136 1.8 rillig 137 1.9 rillig //indent run-equals-input -nbadp 138 1.11 rillig 139 1.11 rillig 140 1.11 rillig /* 141 1.13 rillig * The blank line is only inserted at the top of a function body, not in nested 142 1.13 rillig * block statements. 143 1.13 rillig */ 144 1.13 rillig //indent input 145 1.13 rillig static void 146 1.13 rillig nested(void) 147 1.13 rillig { 148 1.13 rillig { 149 1.13 rillig int decl; 150 1.13 rillig stmt(); 151 1.13 rillig } 152 1.13 rillig } 153 1.13 rillig //indent end 154 1.13 rillig 155 1.14 rillig //indent run -badp 156 1.14 rillig static void 157 1.14 rillig nested(void) 158 1.14 rillig { 159 1.14 rillig 160 1.14 rillig { 161 1.14 rillig int decl; 162 1.14 rillig stmt(); 163 1.14 rillig } 164 1.14 rillig } 165 1.14 rillig //indent end 166 1.13 rillig 167 1.13 rillig //indent run-equals-input -nbadp 168 1.13 rillig 169 1.13 rillig 170 1.13 rillig /* 171 1.11 rillig * A struct declaration or an initializer are not function bodies, so don't 172 1.11 rillig * add a blank line after them. 173 1.11 rillig */ 174 1.11 rillig //indent input 175 1.11 rillig struct { 176 1.11 rillig int member[2]; 177 1.11 rillig } s = { 178 1.11 rillig { 179 1.11 rillig 0, 180 1.11 rillig 0, 181 1.11 rillig } 182 1.11 rillig }; 183 1.11 rillig //indent end 184 1.11 rillig 185 1.11 rillig //indent run-equals-input -di0 -badp 186 1.11 rillig 187 1.11 rillig //indent run-equals-input -di0 -nbadp 188 1.14 rillig 189 1.14 rillig 190 1.14 rillig /* Single-line function definitions must be handled correctly as well. */ 191 1.14 rillig //indent input 192 1.14 rillig void f(void) { int decl; stmt; } 193 1.14 rillig //indent end 194 1.14 rillig 195 1.14 rillig //indent run -badp 196 1.14 rillig void 197 1.14 rillig f(void) 198 1.14 rillig { 199 1.14 rillig int decl; 200 1.14 rillig 201 1.14 rillig stmt; 202 1.14 rillig } 203 1.14 rillig //indent end 204 1.14 rillig 205 1.14 rillig //indent run -nfbs -badp 206 1.14 rillig void 207 1.14 rillig f(void) { 208 1.14 rillig int decl; 209 1.14 rillig 210 1.14 rillig stmt; 211 1.14 rillig } 212 1.14 rillig //indent end 213