Module Name: src Committed By: rillig Date: Fri Jun 2 11:43:07 UTC 2023
Modified Files: src/tests/usr.bin/indent: opt_bc.c src/usr.bin/indent: debug.c indent.c indent.h parse.c Log Message: indent: fix formatting of declarations with preprocessing lines To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/tests/usr.bin/indent/opt_bc.c cvs rdiff -u -r1.23 -r1.24 src/usr.bin/indent/debug.c cvs rdiff -u -r1.310 -r1.311 src/usr.bin/indent/indent.c cvs rdiff -u -r1.159 -r1.160 src/usr.bin/indent/indent.h cvs rdiff -u -r1.62 -r1.63 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/opt_bc.c diff -u src/tests/usr.bin/indent/opt_bc.c:1.7 src/tests/usr.bin/indent/opt_bc.c:1.8 --- src/tests/usr.bin/indent/opt_bc.c:1.7 Fri Jun 2 11:26:21 2023 +++ src/tests/usr.bin/indent/opt_bc.c Fri Jun 2 11:43:07 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: opt_bc.c,v 1.7 2023/06/02 11:26:21 rillig Exp $ */ +/* $NetBSD: opt_bc.c,v 1.8 2023/06/02 11:43:07 rillig Exp $ */ /* * Tests for the options '-bc' and '-nbc'. @@ -65,6 +65,11 @@ double a, b, c; //indent end +/* + * Before indent.c 1.311 from 2023-06-02, indent formatted the two '#if' + * branches differently and merged the 'b, c' with the preceding preprocessing + * line. + */ //indent input int a, #if 0 @@ -81,16 +86,16 @@ int a, c; int d; #else -// $ FIXME: The '#else' branch must be indented like the '#if' branch. - b, c; + b, + c; int d; #endif //indent end //indent run -nbc int a, -// $ FIXME: 'b, c' must not be merged into the preprocessing line. -#if 0 b, c; +#if 0 + b, c; int d; #else b, c; Index: src/usr.bin/indent/debug.c diff -u src/usr.bin/indent/debug.c:1.23 src/usr.bin/indent/debug.c:1.24 --- src/usr.bin/indent/debug.c:1.23 Tue May 23 16:53:57 2023 +++ src/usr.bin/indent/debug.c Fri Jun 2 11:43:07 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: debug.c,v 1.23 2023/05/23 16:53:57 rillig Exp $ */ +/* $NetBSD: debug.c,v 1.24 2023/06/02 11:43:07 rillig Exp $ */ /*- * Copyright (c) 2023 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: debug.c,v 1.23 2023/05/23 16:53:57 rillig Exp $"); +__RCSID("$NetBSD: debug.c,v 1.24 2023/06/02 11:43:07 rillig Exp $"); #include <stdarg.h> @@ -296,6 +296,7 @@ debug_parser_state(void) debug_ps_bool(next_unary); debug_ps_bool(is_function_definition); debug_ps_bool(want_blank); + debug_ps_bool(break_after_comma); debug_ps_bool(force_nl); debug_ps_int(line_start_nparen); debug_ps_int(nparen); Index: src/usr.bin/indent/indent.c diff -u src/usr.bin/indent/indent.c:1.310 src/usr.bin/indent/indent.c:1.311 --- src/usr.bin/indent/indent.c:1.310 Tue May 23 18:16:28 2023 +++ src/usr.bin/indent/indent.c Fri Jun 2 11:43:07 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: indent.c,v 1.310 2023/05/23 18:16:28 rillig Exp $ */ +/* $NetBSD: indent.c,v 1.311 2023/06/02 11:43:07 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: indent.c,v 1.310 2023/05/23 18:16:28 rillig Exp $"); +__RCSID("$NetBSD: indent.c,v 1.311 2023/06/02 11:43:07 rillig Exp $"); #include <sys/param.h> #include <err.h> @@ -81,7 +81,6 @@ struct buffer code; struct buffer com; bool found_err; -bool break_comma; float case_ind; bool had_eof; int line_no = 1; @@ -450,9 +449,11 @@ move_com_to_code(lexer_symbol lsym) static void process_newline(void) { - if (ps.prev_token == lsym_comma && ps.nparen == 0 && !ps.block_init && - !opt.break_after_comma && break_comma && - com.len == 0) + if (ps.prev_token == lsym_comma + && ps.nparen == 0 && !ps.block_init + && !opt.break_after_comma && ps.break_after_comma + && lab.len == 0 /* for preprocessing lines */ + && com.len == 0) goto stay_in_line; output_line(); @@ -947,7 +948,7 @@ process_comma(void) if (ps.block_init_level <= 0) ps.block_init = false; int typical_varname_length = 8; - if (break_comma && (opt.break_after_comma || + if (ps.break_after_comma && (opt.break_after_comma || ind_add(compute_code_indent(), code.st, code.len) >= opt.max_line_length - typical_varname_length)) ps.force_nl = true; Index: src/usr.bin/indent/indent.h diff -u src/usr.bin/indent/indent.h:1.159 src/usr.bin/indent/indent.h:1.160 --- src/usr.bin/indent/indent.h:1.159 Tue May 23 12:12:29 2023 +++ src/usr.bin/indent/indent.h Fri Jun 2 11:43:07 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: indent.h,v 1.159 2023/05/23 12:12:29 rillig Exp $ */ +/* $NetBSD: indent.h,v 1.160 2023/06/02 11:43:07 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD @@ -235,8 +235,6 @@ extern struct options { } opt; extern bool found_err; -extern bool break_comma; /* when true and not in parentheses, break - * after a comma */ extern float case_ind; /* indentation level to be used for a "case n:" */ extern bool had_eof; /* whether input is exhausted */ @@ -393,6 +391,9 @@ extern struct parser_state { /* Vertical spacing */ + bool break_after_comma; /* whether to add a newline after the next + * comma; used in declarations but not in + * initializer lists */ bool force_nl; /* whether the next token is forced to go to a * new line; used after 'if (expr)' and in * similar situations; tokens like '{' may Index: src/usr.bin/indent/parse.c diff -u src/usr.bin/indent/parse.c:1.62 src/usr.bin/indent/parse.c:1.63 --- src/usr.bin/indent/parse.c:1.62 Tue May 23 12:12:29 2023 +++ src/usr.bin/indent/parse.c Fri Jun 2 11:43:07 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: parse.c,v 1.62 2023/05/23 12:12:29 rillig Exp $ */ +/* $NetBSD: parse.c,v 1.63 2023/06/02 11:43:07 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: parse.c,v 1.62 2023/05/23 12:12:29 rillig Exp $"); +__RCSID("$NetBSD: parse.c,v 1.63 2023/06/02 11:43:07 rillig Exp $"); #include <err.h> @@ -79,8 +79,7 @@ parse(parser_symbol psym) if (ps.s_sym[ps.tos] == psym_decl) break; /* only put one declaration onto stack */ - break_comma = true; /* while in a declaration, force a - * newline after comma */ + ps.break_after_comma = true; ps.s_sym[++ps.tos] = psym_decl; ps.s_ind_level[ps.tos] = ps.ind_level_follow; @@ -105,8 +104,7 @@ parse(parser_symbol psym) break; case psym_lbrace: - break_comma = false; /* don't break comma in an initializer - * list */ + ps.break_after_comma = false; if (ps.s_sym[ps.tos] == psym_stmt || ps.s_sym[ps.tos] == psym_decl || ps.s_sym[ps.tos] == psym_stmt_list) @@ -178,8 +176,7 @@ parse(parser_symbol psym) break; case psym_0: /* a simple statement */ - break_comma = false; /* don't break after comma in a - * declaration */ + ps.break_after_comma = false; ps.s_sym[++ps.tos] = psym_stmt; ps.s_ind_level[ps.tos] = ps.ind_level; break;