Module Name: src
Committed By: rillig
Date: Sat Jun 10 06:52:36 UTC 2023
Modified Files:
src/tests/usr.bin/indent: lsym_case_label.c opt_bc.c
src/usr.bin/indent: indent.c
Log Message:
indent: fix token classification in declarations
As a side effect, indent handles _Generic from C11 properly now, at
least in -nlp mode.
To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/tests/usr.bin/indent/lsym_case_label.c
cvs rdiff -u -r1.9 -r1.10 src/tests/usr.bin/indent/opt_bc.c
cvs rdiff -u -r1.349 -r1.350 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/lsym_case_label.c
diff -u src/tests/usr.bin/indent/lsym_case_label.c:1.8 src/tests/usr.bin/indent/lsym_case_label.c:1.9
--- src/tests/usr.bin/indent/lsym_case_label.c:1.8 Sun Jun 4 18:58:30 2023
+++ src/tests/usr.bin/indent/lsym_case_label.c Sat Jun 10 06:52:35 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lsym_case_label.c,v 1.8 2023/06/04 18:58:30 rillig Exp $ */
+/* $NetBSD: lsym_case_label.c,v 1.9 2023/06/10 06:52:35 rillig Exp $ */
/*
* Tests for the tokens lsym_case and lsym_default, which represent the
@@ -92,22 +92,12 @@ const char *type_name = _Generic(
// $ XXX: It's strange to align the arguments at the parenthesis even though
// $ XXX: the first argument is already on a separate line.
' ',
-// $ TODO: indent the type names
-int: "character constants have type 'int'",
-char: "character constants have type 'char'",
-default:
-// $ TODO: remove the newline after 'default:'
- "character constants have some other type"
+ int: "character constants have type 'int'",
+// $ FIXME: The indentation is not sensible in any way.
+ char: "character constants have type 'char'",
+// $ FIXME: The indentation is not sensible in any way.
+ default: "character constants have some other type"
);
//indent end
-//indent run -di0 -nlp
-const char *type_name = _Generic(
- ' ',
-// $ TODO: indent the type names
-int: "character constants have type 'int'",
-char: "character constants have type 'char'",
-default:
- "character constants have some other type"
-);
-//indent end
+//indent run-equals-input -di0 -nlp
Index: src/tests/usr.bin/indent/opt_bc.c
diff -u src/tests/usr.bin/indent/opt_bc.c:1.9 src/tests/usr.bin/indent/opt_bc.c:1.10
--- src/tests/usr.bin/indent/opt_bc.c:1.9 Sat Jun 10 06:38:21 2023
+++ src/tests/usr.bin/indent/opt_bc.c Sat Jun 10 06:52:35 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: opt_bc.c,v 1.9 2023/06/10 06:38:21 rillig Exp $ */
+/* $NetBSD: opt_bc.c,v 1.10 2023/06/10 06:52:35 rillig Exp $ */
/*
* Tests for the options '-bc' and '-nbc'.
@@ -105,8 +105,8 @@ int d;
/*
- * A '(' at the top level is taken to start a function definition, leaving
- * variable declaration mode.
+ * Before 2023-06-10, a '(' at the top level started a function definition,
+ * leaving variable declaration mode.
*/
//indent input
int a = 1, b = 2;
@@ -116,6 +116,6 @@ int a = (1), b = 2;
//indent run -bc
int a = 1,
b = 2;
-// $ FIXME: Missing line break.
-int a = (1), b = 2;
+int a = (1),
+ b = 2;
//indent end
Index: src/usr.bin/indent/indent.c
diff -u src/usr.bin/indent/indent.c:1.349 src/usr.bin/indent/indent.c:1.350
--- src/usr.bin/indent/indent.c:1.349 Sat Jun 10 06:38:21 2023
+++ src/usr.bin/indent/indent.c Sat Jun 10 06:52:35 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: indent.c,v 1.349 2023/06/10 06:38:21 rillig Exp $ */
+/* $NetBSD: indent.c,v 1.350 2023/06/10 06:52:35 rillig Exp $ */
/*-
* SPDX-License-Identifier: BSD-4-Clause
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: indent.c,v 1.349 2023/06/10 06:38:21 rillig Exp $");
+__RCSID("$NetBSD: indent.c,v 1.350 2023/06/10 06:52:35 rillig Exp $");
#include <sys/param.h>
#include <err.h>
@@ -531,9 +531,8 @@ process_lparen(void)
if (opt.extra_expr_indent && ps.spaced_expr_psym != psym_0)
ps.extra_expr_indent = eei_maybe;
- if (ps.in_var_decl && ps.psyms.top <= 2) {
- /* A kludge to correctly align function definitions. */
- parse(psym_stmt);
+ if (ps.in_var_decl && ps.psyms.top <= 2 && !ps.in_init) {
+ parse(psym_stmt); /* prepare for function definition */
ps.in_var_decl = false;
}
@@ -841,7 +840,7 @@ static void
process_colon_other(void)
{
buf_add_char(&code, ':');
- ps.want_blank = false;
+ ps.want_blank = ps.decl_level == 0;
}
static void