Fri Jun 16 14:26:27 2023 UTC ()
indent: improve heuristics for cast expressions


(rillig)
diff -r1.7 -r1.8 src/tests/usr.bin/indent/lsym_rparen_or_rbracket.c
diff -r1.376 -r1.377 src/usr.bin/indent/indent.c

cvs diff -r1.7 -r1.8 src/tests/usr.bin/indent/lsym_rparen_or_rbracket.c (expand / switch to context diff)
--- src/tests/usr.bin/indent/lsym_rparen_or_rbracket.c 2023/06/16 14:12:10 1.7
+++ src/tests/usr.bin/indent/lsym_rparen_or_rbracket.c 2023/06/16 14:26:27 1.8
@@ -1,4 +1,4 @@
-/* $NetBSD: lsym_rparen_or_rbracket.c,v 1.7 2023/06/16 14:12:10 rillig Exp $ */
+/* $NetBSD: lsym_rparen_or_rbracket.c,v 1.8 2023/06/16 14:26:27 rillig Exp $ */
 
 /*
  * Tests for the token lsym_rparen_or_lbracket, which represents ')' or ']',
@@ -56,7 +56,13 @@
 //indent end
 
 
+/*
+ * Cast expressions and compound expressions, taken from lint and make.
+ */
 //indent input
+// This ')' is not a cast.
+char *Buf_DoneData(Buffer *) MAKE_ATTR_USE;
+
 {
 	dcs_align((u_int)dcs);
 	mpools.pools[i] = (memory_pool){NULL, 0, 0};
@@ -64,13 +70,4 @@
 }
 //indent end
 
-//indent run -ci4 -di0 -nlp
+//indent run-equals-input -ci4 -di0 -nlp
-{
-	dcs_align((u_int)dcs);
-// $ FIXME: Don't add newlines.
-	mpools.pools[i] = (memory_pool) {
-		NULL, 0, 0
-	};
-	list_add(l, (const char[3]){'-', (char)c, '\0'});
-}
-//indent end

cvs diff -r1.376 -r1.377 src/usr.bin/indent/indent.c (expand / switch to context diff)
--- src/usr.bin/indent/indent.c 2023/06/16 14:12:10 1.376
+++ src/usr.bin/indent/indent.c 2023/06/16 14:26:26 1.377
@@ -1,4 +1,4 @@
-/*	$NetBSD: indent.c,v 1.376 2023/06/16 14:12:10 rillig Exp $	*/
+/*	$NetBSD: indent.c,v 1.377 2023/06/16 14:26:26 rillig Exp $	*/
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: indent.c,v 1.376 2023/06/16 14:12:10 rillig Exp $");
+__RCSID("$NetBSD: indent.c,v 1.377 2023/06/16 14:26:26 rillig Exp $");
 
 #include <sys/param.h>
 #include <err.h>
@@ -622,11 +622,13 @@
 {
 	if (ps.in_func_def_params)
 		return false;
+	if (ps.line_has_decl && !ps.in_init)
+		return false;
 	if (ps.prev_lsym == lsym_unary_op)
 		return true;
-	if (ps.line_has_decl && !ps.in_init)
+	if (ps.spaced_expr_psym != psym_0 && ps.paren.len == 0)
 		return false;
-	return paren_cast || ch_isalpha(inp_p[0]);
+	return paren_cast || ch_isalpha(inp_p[0]) || inp_p[0] == '{';
 }
 
 static void