1 1.6 rillig /* $NetBSD: fmt_else_comment.c,v 1.6 2023/06/23 20:44:51 rillig Exp $ */ 2 1.1 rillig 3 1.2 rillig /* 4 1.6 rillig * Tests for comments after 'if (expr)' and 'else'. Before 2023-05-11, if the 5 1.6 rillig * option '-br' was given (or rather, if '-bl' was not given), indent looked 6 1.6 rillig * ahead to the following significant token to see whether it was a '{', it 7 1.6 rillig * then moved the comments after the '{'. This token swapping was error-prone 8 1.6 rillig * and thus removed. 9 1.2 rillig * 10 1.2 rillig * See also: 11 1.2 rillig * FreeBSD r303484 12 1.2 rillig * FreeBSD r309342 13 1.2 rillig */ 14 1.2 rillig 15 1.2 rillig /* 16 1.6 rillig * Before 2023-05-11, the two 'if' statements below exercised two different 17 1.6 rillig * code paths, even though they look very similar. 18 1.2 rillig */ 19 1.4 rillig //indent input 20 1.1 rillig void t(void) { 21 1.1 rillig if (1) /* a */ int a; else /* b */ int b; 22 1.1 rillig 23 1.1 rillig if (1) /* a */ 24 1.1 rillig int a; 25 1.1 rillig else /* b */ 26 1.1 rillig int b; 27 1.2 rillig } 28 1.4 rillig //indent end 29 1.1 rillig 30 1.4 rillig //indent run 31 1.2 rillig void 32 1.2 rillig t(void) 33 1.2 rillig { 34 1.2 rillig if (1) /* a */ 35 1.2 rillig int a; 36 1.2 rillig else /* b */ 37 1.2 rillig int b; 38 1.2 rillig 39 1.2 rillig if (1) /* a */ 40 1.2 rillig int a; 41 1.2 rillig else /* b */ 42 1.2 rillig int b; 43 1.2 rillig } 44 1.4 rillig //indent end 45 1.2 rillig 46 1.2 rillig 47 1.4 rillig //indent input 48 1.2 rillig void t(void) { 49 1.1 rillig if (1) { 50 1.1 rillig 51 1.1 rillig } 52 1.1 rillig 53 1.1 rillig 54 1.1 rillig 55 1.1 rillig /* Old indent would remove the 3 blank lines above, awaiting "else". */ 56 1.6 rillig // $ 'Old' means something before 2019. 57 1.1 rillig 58 1.1 rillig if (1) { 59 1.1 rillig int a; 60 1.1 rillig } 61 1.1 rillig 62 1.1 rillig 63 1.1 rillig else if (0) { 64 1.1 rillig int b; 65 1.1 rillig } 66 1.1 rillig /* test */ 67 1.1 rillig else 68 1.1 rillig ; 69 1.1 rillig 70 1.1 rillig if (1) 71 1.1 rillig ; 72 1.1 rillig else /* Old indent would get very confused here */ 73 1.6 rillig // $ 'Old' means something before 2019. 74 1.1 rillig /* We also mustn't assume that there's only one comment */ 75 1.1 rillig /* before the left brace. */ 76 1.1 rillig { 77 1.1 rillig 78 1.1 rillig 79 1.1 rillig } 80 1.1 rillig } 81 1.4 rillig //indent end 82 1.1 rillig 83 1.4 rillig //indent run -bl 84 1.1 rillig void 85 1.1 rillig t(void) 86 1.1 rillig { 87 1.1 rillig if (1) 88 1.1 rillig { 89 1.1 rillig 90 1.1 rillig } 91 1.1 rillig 92 1.1 rillig 93 1.1 rillig 94 1.1 rillig /* 95 1.1 rillig * Old indent would remove the 3 blank lines above, awaiting "else". 96 1.1 rillig */ 97 1.1 rillig 98 1.1 rillig if (1) 99 1.1 rillig { 100 1.1 rillig int a; 101 1.5 rillig } 102 1.5 rillig 103 1.5 rillig 104 1.5 rillig else if (0) 105 1.1 rillig { 106 1.1 rillig int b; 107 1.1 rillig } 108 1.1 rillig /* test */ 109 1.1 rillig else 110 1.1 rillig ; 111 1.1 rillig 112 1.1 rillig if (1) 113 1.1 rillig ; 114 1.1 rillig else /* Old indent would get very confused here */ 115 1.1 rillig /* We also mustn't assume that there's only one comment */ 116 1.1 rillig /* before the left brace. */ 117 1.1 rillig { 118 1.1 rillig 119 1.1 rillig 120 1.1 rillig } 121 1.1 rillig } 122 1.4 rillig //indent end 123