Module Name: src
Committed By: rillig
Date: Tue Jan 7 03:14:24 UTC 2025
Modified Files:
src/tests/usr.bin/indent: psym_for_exprs.c psym_if_expr_stmt.c
src/usr.bin/indent: parse.c
Log Message:
indent: fix indentation of statement after deeply nested 'if'
To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/tests/usr.bin/indent/psym_for_exprs.c
cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/indent/psym_if_expr_stmt.c
cvs rdiff -u -r1.83 -r1.84 src/usr.bin/indent/parse.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/psym_for_exprs.c
diff -u src/tests/usr.bin/indent/psym_for_exprs.c:1.6 src/tests/usr.bin/indent/psym_for_exprs.c:1.7
--- src/tests/usr.bin/indent/psym_for_exprs.c:1.6 Mon May 15 08:56:39 2023
+++ src/tests/usr.bin/indent/psym_for_exprs.c Tue Jan 7 03:14:24 2025
@@ -1,4 +1,4 @@
-/* $NetBSD: psym_for_exprs.c,v 1.6 2023/05/15 08:56:39 rillig Exp $ */
+/* $NetBSD: psym_for_exprs.c,v 1.7 2025/01/07 03:14:24 rillig Exp $ */
/*
* Tests for the parser state psym_for_exprs, which represents the state after
@@ -27,3 +27,26 @@ for_loops(void)
//indent end
//indent run-equals-input -ldi0
+
+
+//indent input
+{
+for (ever1)
+for (ever2)
+for (ever3)
+return;
+
+stmt;
+}
+//indent end
+
+//indent run
+{
+ for (ever1)
+ for (ever2)
+ for (ever3)
+ return;
+
+ stmt;
+}
+//indent end
Index: src/tests/usr.bin/indent/psym_if_expr_stmt.c
diff -u src/tests/usr.bin/indent/psym_if_expr_stmt.c:1.4 src/tests/usr.bin/indent/psym_if_expr_stmt.c:1.5
--- src/tests/usr.bin/indent/psym_if_expr_stmt.c:1.4 Sun Apr 24 09:04:12 2022
+++ src/tests/usr.bin/indent/psym_if_expr_stmt.c Tue Jan 7 03:14:24 2025
@@ -1,4 +1,4 @@
-/* $NetBSD: psym_if_expr_stmt.c,v 1.4 2022/04/24 09:04:12 rillig Exp $ */
+/* $NetBSD: psym_if_expr_stmt.c,v 1.5 2025/01/07 03:14:24 rillig Exp $ */
/*
* Tests for the parser symbol psym_if_expr_stmt, which represents the state
@@ -25,3 +25,32 @@ function(void)
//indent end
//indent run-equals-input
+
+
+//indent input
+{
+for (ever1)
+for (ever2)
+for (ever3)
+if (cond1)
+if (cond2)
+if (cond3)
+return;
+
+stmt;
+}
+//indent end
+
+//indent run
+{
+ for (ever1)
+ for (ever2)
+ for (ever3)
+ if (cond1)
+ if (cond2)
+ if (cond3)
+ return;
+
+ stmt;
+}
+//indent end
Index: src/usr.bin/indent/parse.c
diff -u src/usr.bin/indent/parse.c:1.83 src/usr.bin/indent/parse.c:1.84
--- src/usr.bin/indent/parse.c:1.83 Tue Jan 7 02:55:30 2025
+++ src/usr.bin/indent/parse.c Tue Jan 7 03:14:23 2025
@@ -1,4 +1,4 @@
-/* $NetBSD: parse.c,v 1.83 2025/01/07 02:55:30 rillig Exp $ */
+/* $NetBSD: parse.c,v 1.84 2025/01/07 03:14:23 rillig Exp $ */
/*-
* SPDX-License-Identifier: BSD-4-Clause
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: parse.c,v 1.83 2025/01/07 02:55:30 rillig Exp $");
+__RCSID("$NetBSD: parse.c,v 1.84 2025/01/07 03:14:23 rillig Exp $");
#include <stdlib.h>
@@ -156,9 +156,9 @@ parse(parser_symbol psym)
if (psym != psym_else) {
while (ps.psyms.sym[ps.psyms.len - 1] == psym_if_expr_stmt) {
ps.psyms.sym[ps.psyms.len - 1] = psym_stmt;
- ps.ind_level = ps.ind_level_follow
- = ps.psyms.ind_level[ps.psyms.len - 2];
psyms_reduce();
+ ps.ind_level = ps.ind_level_follow
+ = ps.psyms.ind_level[ps.psyms.len - 1];
}
}