Module Name:    src
Committed By:   rillig
Date:           Thu Nov  4 17:12:12 UTC 2021

Modified Files:
        src/tests/usr.bin/indent: token_binary_op.c token_unary_op.c
        src/usr.bin/indent: indent.c

Log Message:
indent: fix joining of adjacent unary '+' operators


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/tests/usr.bin/indent/token_binary_op.c
cvs rdiff -u -r1.1 -r1.2 src/tests/usr.bin/indent/token_unary_op.c
cvs rdiff -u -r1.205 -r1.206 src/usr.bin/indent/indent.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/usr.bin/indent/token_binary_op.c
diff -u src/tests/usr.bin/indent/token_binary_op.c:1.6 src/tests/usr.bin/indent/token_binary_op.c:1.7
--- src/tests/usr.bin/indent/token_binary_op.c:1.6	Sat Oct 30 22:36:07 2021
+++ src/tests/usr.bin/indent/token_binary_op.c	Thu Nov  4 17:12:12 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: token_binary_op.c,v 1.6 2021/10/30 22:36:07 rillig Exp $ */
+/* $NetBSD: token_binary_op.c,v 1.7 2021/11/04 17:12:12 rillig Exp $ */
 /* $FreeBSD$ */
 
 /*
@@ -214,7 +214,7 @@ peculiarities(void)
 	 *
 	 * See lexi.c, lexi, "case '+':".
 	 */
-	if (a++ ++ +++b)
+	if (a++ ++ ++ +b)
 		return;
 }
 #indent end

Index: src/tests/usr.bin/indent/token_unary_op.c
diff -u src/tests/usr.bin/indent/token_unary_op.c:1.1 src/tests/usr.bin/indent/token_unary_op.c:1.2
--- src/tests/usr.bin/indent/token_unary_op.c:1.1	Mon Oct 18 22:30:34 2021
+++ src/tests/usr.bin/indent/token_unary_op.c	Thu Nov  4 17:12:12 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: token_unary_op.c,v 1.1 2021/10/18 22:30:34 rillig Exp $ */
+/* $NetBSD: token_unary_op.c,v 1.2 2021/11/04 17:12:12 rillig Exp $ */
 /* $FreeBSD$ */
 
 /*
@@ -16,7 +16,5 @@ int same = + + + + + - - - - - 3;
 int var = +3;
 int mixed = +-+-+-+-+-+-+-+-+-+-+-+-+-3;
 int count = ~-~-~-~-~-~-~-~-~-~-~-~-~-3;
-/* $ FIXME: There must be spaces between adjacent '+'. */
-/* $ FIXME: There must be spaces between adjacent '-'. */
-int same = +++++-----3;
+int same = + + + + +- - - - -3;
 #indent end

Index: src/usr.bin/indent/indent.c
diff -u src/usr.bin/indent/indent.c:1.205 src/usr.bin/indent/indent.c:1.206
--- src/usr.bin/indent/indent.c:1.205	Wed Nov  3 21:47:35 2021
+++ src/usr.bin/indent/indent.c	Thu Nov  4 17:12:12 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: indent.c,v 1.205 2021/11/03 21:47:35 rillig Exp $	*/
+/*	$NetBSD: indent.c,v 1.206 2021/11/04 17:12:12 rillig Exp $	*/
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -43,7 +43,7 @@ static char sccsid[] = "@(#)indent.c	5.1
 
 #include <sys/cdefs.h>
 #if defined(__NetBSD__)
-__RCSID("$NetBSD: indent.c,v 1.205 2021/11/03 21:47:35 rillig Exp $");
+__RCSID("$NetBSD: indent.c,v 1.206 2021/11/04 17:12:12 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/indent.c 340138 2018-11-04 19:24:49Z oshogbo $");
 #endif
@@ -834,6 +834,16 @@ process_rparen_or_rbracket(bool *spaced_
     ps.search_stmt = opt.brace_same_line;
 }
 
+static bool
+want_blank_before_unary_op(void)
+{
+    if (ps.want_blank)
+	return true;
+    if (token.s[0] == '+' || token.s[0] == '-')
+	return code.e[-1] == token.s[0];
+    return false;
+}
+
 static void
 process_unary_op(int decl_ind, bool tabs_to_var)
 {
@@ -842,7 +852,7 @@ process_unary_op(int decl_ind, bool tabs
 	/* pointer declarations */
 	code_add_decl_indent(decl_ind - (int)buf_len(&token), tabs_to_var);
 	ps.decl_indent_done = true;
-    } else if (ps.want_blank)
+    } else if (want_blank_before_unary_op())
 	*code.e++ = ' ';
 
     buf_add_buf(&code, &token);

Reply via email to