Module Name:    src
Committed By:   rillig
Date:           Sat May 20 00:17:56 UTC 2023

Modified Files:
        src/usr.bin/indent: indent.h lexi.c

Log Message:
indent: separate detection of function definitions from lexing '*'

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.150 -r1.151 src/usr.bin/indent/indent.h
cvs rdiff -u -r1.199 -r1.200 src/usr.bin/indent/lexi.c

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

Modified files:

Index: src/usr.bin/indent/indent.h
diff -u src/usr.bin/indent/indent.h:1.150 src/usr.bin/indent/indent.h:1.151
--- src/usr.bin/indent/indent.h:1.150	Thu May 18 08:09:28 2023
+++ src/usr.bin/indent/indent.h	Sat May 20 00:17:56 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: indent.h,v 1.150 2023/05/18 08:09:28 rillig Exp $	*/
+/*	$NetBSD: indent.h,v 1.151 2023/05/20 00:17:56 rillig Exp $	*/
 
 /*-
  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -286,7 +286,13 @@ extern struct parser_state {
 	int quest_level;	/* when this is positive, we have seen a '?'
 				 * without the matching ':' in a '?:'
 				 * expression */
-	bool is_function_definition;
+	bool is_function_definition;	/* starts either at the 'name(' from a
+					 * function definition if it occurs at
+					 * the beginning of a line, or at the
+					 * first '*' from inside a declaration
+					 * when the line starts with words
+					 * followed by a '('; ends at the end
+					 * of that line */
 	bool block_init;	/* whether inside a block initialization */
 	int block_init_level;	/* the level of brace nesting in an
 				 * initialization */

Index: src/usr.bin/indent/lexi.c
diff -u src/usr.bin/indent/lexi.c:1.199 src/usr.bin/indent/lexi.c:1.200
--- src/usr.bin/indent/lexi.c:1.199	Thu May 18 05:33:27 2023
+++ src/usr.bin/indent/lexi.c	Sat May 20 00:17:56 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: lexi.c,v 1.199 2023/05/18 05:33:27 rillig Exp $	*/
+/*	$NetBSD: lexi.c,v 1.200 2023/05/20 00:17:56 rillig Exp $	*/
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: lexi.c,v 1.199 2023/05/18 05:33:27 rillig Exp $");
+__RCSID("$NetBSD: lexi.c,v 1.200 2023/05/20 00:17:56 rillig Exp $");
 
 #include <stdlib.h>
 #include <string.h>
@@ -447,6 +447,22 @@ is_asterisk_unary(void)
 	return ps.in_decl && ps.nparen > 0;
 }
 
+static bool
+probably_in_function_definition(void)
+{
+	for (const char *tp = inp.st; *tp != '\n';) {
+		if (ch_isspace(*tp))
+			tp++;
+		else if (is_identifier_start(*tp)) {
+			tp++;
+			while (is_identifier_part(*tp))
+				tp++;
+		} else
+			return *tp == '(';
+	}
+	return false;
+}
+
 static void
 lex_asterisk_unary(void)
 {
@@ -456,21 +472,8 @@ lex_asterisk_unary(void)
 		inp_skip();
 	}
 
-	if (ps.in_decl) {
-		for (const char *tp = inp.st; *tp != '\n';) {
-			if (ch_isspace(*tp))
-				tp++;
-			else if (is_identifier_start(*tp)) {
-				tp++;
-				while (is_identifier_part(*tp))
-					tp++;
-			} else {
-				if (*tp == '(')
-					ps.is_function_definition = true;
-				break;
-			}
-		}
-	}
+	if (ps.in_decl && probably_in_function_definition())
+		ps.is_function_definition = true;
 }
 
 static void

Reply via email to