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]; } }