1 1.13 rillig /* $NetBSD: opt_badp.c,v 1.13 2023/06/26 11:01:08 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.10 rillig /* TODO: add blank line */ 69 1.10 rillig //indent run-equals-input -badp 70 1.8 rillig 71 1.9 rillig //indent run-equals-input -nbadp 72 1.5 rillig 73 1.1 rillig 74 1.13 rillig /* 75 1.13 rillig * A function body with a declaration and a statement gets a blank line between 76 1.13 rillig * those. 77 1.13 rillig */ 78 1.9 rillig //indent input 79 1.5 rillig void 80 1.6 rillig declaration_statement(void) 81 1.5 rillig { 82 1.5 rillig int decl; 83 1.5 rillig stmt(); 84 1.5 rillig } 85 1.9 rillig //indent end 86 1.5 rillig 87 1.9 rillig //indent run -badp 88 1.5 rillig void 89 1.6 rillig declaration_statement(void) 90 1.1 rillig { 91 1.5 rillig int decl; 92 1.5 rillig /* $ FIXME: missing empty line */ 93 1.5 rillig stmt(); 94 1.1 rillig } 95 1.9 rillig //indent end 96 1.8 rillig 97 1.9 rillig //indent run-equals-input -nbadp 98 1.1 rillig 99 1.5 rillig 100 1.13 rillig /* If there already is a blank line in the right place, it is kept. */ 101 1.9 rillig //indent input 102 1.1 rillig static void 103 1.5 rillig declaration_blank_statement(void) 104 1.1 rillig { 105 1.5 rillig int decl; 106 1.1 rillig 107 1.5 rillig stmt(); 108 1.1 rillig } 109 1.9 rillig //indent end 110 1.5 rillig 111 1.9 rillig //indent run-equals-input -badp 112 1.8 rillig 113 1.9 rillig //indent run-equals-input -nbadp 114 1.1 rillig 115 1.5 rillig 116 1.13 rillig /* Additional blank lines are kept. To remove them, see the '-sob' option. */ 117 1.9 rillig //indent input 118 1.1 rillig static void 119 1.5 rillig declaration_blank_blank_statement(void) 120 1.1 rillig { 121 1.5 rillig int decl; 122 1.1 rillig 123 1.1 rillig 124 1.1 rillig 125 1.5 rillig stmt(); 126 1.1 rillig } 127 1.9 rillig //indent end 128 1.1 rillig 129 1.9 rillig //indent run-equals-input -badp 130 1.8 rillig 131 1.9 rillig //indent run-equals-input -nbadp 132 1.11 rillig 133 1.11 rillig 134 1.11 rillig /* 135 1.13 rillig * The blank line is only inserted at the top of a function body, not in nested 136 1.13 rillig * block statements. 137 1.13 rillig */ 138 1.13 rillig //indent input 139 1.13 rillig static void 140 1.13 rillig nested(void) 141 1.13 rillig { 142 1.13 rillig { 143 1.13 rillig int decl; 144 1.13 rillig stmt(); 145 1.13 rillig } 146 1.13 rillig } 147 1.13 rillig //indent end 148 1.13 rillig 149 1.13 rillig //indent run-equals-input -badp 150 1.13 rillig 151 1.13 rillig //indent run-equals-input -nbadp 152 1.13 rillig 153 1.13 rillig 154 1.13 rillig /* 155 1.11 rillig * A struct declaration or an initializer are not function bodies, so don't 156 1.11 rillig * add a blank line after them. 157 1.11 rillig */ 158 1.11 rillig //indent input 159 1.11 rillig struct { 160 1.11 rillig int member[2]; 161 1.11 rillig } s = { 162 1.11 rillig { 163 1.11 rillig 0, 164 1.11 rillig 0, 165 1.11 rillig } 166 1.11 rillig }; 167 1.11 rillig //indent end 168 1.11 rillig 169 1.11 rillig //indent run-equals-input -di0 -badp 170 1.11 rillig 171 1.11 rillig //indent run-equals-input -di0 -nbadp 172