Home | History | Annotate | Line # | Download | only in indent
fmt_else_comment.c revision 1.6
      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