Module Name: src
Committed By: rillig
Date: Mon Jun 26 14:54:40 UTC 2023
Modified Files:
src/tests/usr.bin/indent: opt_bad.c
src/usr.bin/indent: indent.c io.c
Log Message:
indent: in -bad mode, don't add a blank line above a comment or '}'
To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/tests/usr.bin/indent/opt_bad.c
cvs rdiff -u -r1.384 -r1.385 src/usr.bin/indent/indent.c
cvs rdiff -u -r1.229 -r1.230 src/usr.bin/indent/io.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/opt_bad.c
diff -u src/tests/usr.bin/indent/opt_bad.c:1.11 src/tests/usr.bin/indent/opt_bad.c:1.12
--- src/tests/usr.bin/indent/opt_bad.c:1.11 Sat Jun 17 22:09:24 2023
+++ src/tests/usr.bin/indent/opt_bad.c Mon Jun 26 14:54:40 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: opt_bad.c,v 1.11 2023/06/17 22:09:24 rillig Exp $ */
+/* $NetBSD: opt_bad.c,v 1.12 2023/06/26 14:54:40 rillig Exp $ */
/*
* Tests for the options '-bad' and '-nbad'.
@@ -12,14 +12,6 @@
/* Test global declarations. */
//indent input
-int global_variable;
-void function_declaration(void);
-#if 0
-#endif
-/* comment */
-//indent end
-
-//indent run -bad
int global_variable;
void function_declaration(void);
#if 0
@@ -27,7 +19,9 @@ void function_declaration(void);
/* comment */
//indent end
-//indent run-equals-prev-output -nbad
+//indent run-equals-input -bad
+
+//indent run-equals-input -nbad
/* See FreeBSD r303599. */
@@ -110,8 +104,10 @@ comments(void)
{
int local_var_1; /* comment */
int local_var_2; /* comment */
-
+// $ Indent does not look ahead much, so it doesn't know whether this comment
+// $ will be followed by a declaration or a statement.
/* comment line */
+
function_call();
}
//indent end
@@ -169,20 +165,17 @@ initializer_with_blank(void)
//indent input
{
- int decl;
+ // $ The '}' in an initializer does not finish a declaration,
+ // $ only a semicolon does.
+ int decl1[2][2] = {
+ {1, 2},
+ {3, 4},
+ };
/* comment */
- int decl;
+ int decl2;
+ // $ If the declaration is followed by a '}' that terminates the block
+ // $ statement, * there is no need for a blank line before the '}'.
}
//indent end
-//indent run -bad -di0
-{
- int decl;
-// $ FIXME: This blank line is _between_ the declarations, not _after_ them.
-
- /* comment */
- int decl;
-// $ XXX: This blank line is unnecessary, it doesn't occur in practice, though.
-
-}
-//indent end
+//indent run-equals-input -bad -di0
Index: src/usr.bin/indent/indent.c
diff -u src/usr.bin/indent/indent.c:1.384 src/usr.bin/indent/indent.c:1.385
--- src/usr.bin/indent/indent.c:1.384 Sun Jun 25 19:35:45 2023
+++ src/usr.bin/indent/indent.c Mon Jun 26 14:54:40 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: indent.c,v 1.384 2023/06/25 19:35:45 rillig Exp $ */
+/* $NetBSD: indent.c,v 1.385 2023/06/26 14:54:40 rillig Exp $ */
/*-
* SPDX-License-Identifier: BSD-4-Clause
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: indent.c,v 1.384 2023/06/25 19:35:45 rillig Exp $");
+__RCSID("$NetBSD: indent.c,v 1.385 2023/06/26 14:54:40 rillig Exp $");
#include <sys/param.h>
#include <err.h>
@@ -767,6 +767,8 @@ process_rbrace(void)
}
ps.declaration = decl_no;
+ if (ps.decl_level == 0)
+ ps.blank_line_after_decl = false;
if (ps.init_level > 0)
ps.init_level--;
Index: src/usr.bin/indent/io.c
diff -u src/usr.bin/indent/io.c:1.229 src/usr.bin/indent/io.c:1.230
--- src/usr.bin/indent/io.c:1.229 Sat Jun 17 23:03:20 2023
+++ src/usr.bin/indent/io.c Mon Jun 26 14:54:40 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: io.c,v 1.229 2023/06/17 23:03:20 rillig Exp $ */
+/* $NetBSD: io.c,v 1.230 2023/06/26 14:54:40 rillig Exp $ */
/*-
* SPDX-License-Identifier: BSD-4-Clause
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: io.c,v 1.229 2023/06/17 23:03:20 rillig Exp $");
+__RCSID("$NetBSD: io.c,v 1.230 2023/06/26 14:54:40 rillig Exp $");
#include <stdio.h>
@@ -171,7 +171,8 @@ want_blank_line(void)
debug_println("%s: %s -> %s", __func__,
line_kind_name[out.prev_line_kind], line_kind_name[out.line_kind]);
- if (ps.blank_line_after_decl && ps.declaration == decl_no) {
+ if (ps.blank_line_after_decl && ps.declaration == decl_no
+ && (lab.len > 0 || code.len > 0)) {
ps.blank_line_after_decl = false;
return true;
}