Module Name: src Committed By: rillig Date: Thu May 11 10:51:34 UTC 2023
Modified Files: src/usr.bin/indent: indent.c indent.h lexi.c Log Message: indent: move force_nl into the parser state This way, it is included in the debug output. No functional change. To generate a diff of this commit: cvs rdiff -u -r1.247 -r1.248 src/usr.bin/indent/indent.c cvs rdiff -u -r1.113 -r1.114 src/usr.bin/indent/indent.h cvs rdiff -u -r1.173 -r1.174 src/usr.bin/indent/lexi.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/indent/indent.c diff -u src/usr.bin/indent/indent.c:1.247 src/usr.bin/indent/indent.c:1.248 --- src/usr.bin/indent/indent.c:1.247 Thu May 11 10:39:25 2023 +++ src/usr.bin/indent/indent.c Thu May 11 10:51:33 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: indent.c,v 1.247 2023/05/11 10:39:25 rillig Exp $ */ +/* $NetBSD: indent.c,v 1.248 2023/05/11 10:51:33 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -43,13 +43,12 @@ static char sccsid[] = "@(#)indent.c 5.1 #include <sys/cdefs.h> #if defined(__NetBSD__) -__RCSID("$NetBSD: indent.c,v 1.247 2023/05/11 10:39:25 rillig Exp $"); +__RCSID("$NetBSD: indent.c,v 1.248 2023/05/11 10:51:33 rillig Exp $"); #elif defined(__FreeBSD__) __FBSDID("$FreeBSD: head/usr.bin/indent/indent.c 340138 2018-11-04 19:24:49Z oshogbo $"); #endif #include <sys/param.h> -#include <assert.h> #include <err.h> #include <errno.h> #include <fcntl.h> @@ -403,9 +402,9 @@ process_eof(void) } static void -maybe_break_line(lexer_symbol lsym, bool *force_nl) +maybe_break_line(lexer_symbol lsym) { - if (!*force_nl) + if (!ps.force_nl) return; if (lsym == lsym_semicolon) return; @@ -416,7 +415,7 @@ maybe_break_line(lexer_symbol lsym, bool diag(0, "Line broken"); output_line(); ps.want_blank = false; - *force_nl = false; + ps.force_nl = false; } static void @@ -515,7 +514,7 @@ process_lparen_or_lbracket(int decl_ind, } static void -process_rparen_or_rbracket(bool *spaced_expr, bool *force_nl, stmt_head hd) +process_rparen_or_rbracket(bool *spaced_expr, stmt_head hd) { if (ps.paren[ps.nparen - 1].maybe_cast && !ps.paren[ps.nparen - 1].no_cast) { @@ -539,7 +538,7 @@ process_rparen_or_rbracket(bool *spaced_ if (*spaced_expr && ps.nparen == 0) { /* check for end of 'if * (...)', or some such */ *spaced_expr = false; - *force_nl = true; /* must force newline after if */ + ps.force_nl = true; ps.next_unary = true; ps.in_stmt_or_decl = false; /* don't use stmt continuation * indentation */ @@ -601,7 +600,7 @@ process_question(int *quest_level) } static void -process_colon(int *quest_level, bool *force_nl, bool *seen_case) +process_colon(int *quest_level, bool *seen_case) { if (*quest_level > 0) { /* part of a '?:' operator */ --*quest_level; @@ -625,14 +624,14 @@ process_colon(int *quest_level, bool *fo ps.in_stmt_or_decl = false; ps.is_case_label = *seen_case; - *force_nl = *seen_case; + ps.force_nl = *seen_case; *seen_case = false; ps.want_blank = false; } static void process_semicolon(bool *seen_case, int *quest_level, int decl_ind, - bool tabs_to_var, bool *spaced_expr, stmt_head hd, bool *force_nl) + bool tabs_to_var, bool *spaced_expr, stmt_head hd) { if (ps.decl_level == 0) ps.init_or_struct = false; @@ -674,19 +673,18 @@ process_semicolon(bool *seen_case, int * if (!*spaced_expr) { /* if not if for (;;) */ parse(psym_semicolon); /* let parser know about end of stmt */ - *force_nl = true; /* force newline after an end of stmt */ + ps.force_nl = true; } } static void -process_lbrace(bool *force_nl, bool *spaced_expr, stmt_head hd, +process_lbrace(bool *spaced_expr, stmt_head hd, int *di_stack, int di_stack_cap, int *decl_ind) { ps.in_stmt_or_decl = false; /* don't indent the {} */ if (!ps.block_init) - *force_nl = true; /* force other stuff on same line as '{' onto - * new line */ + ps.force_nl = true; else if (ps.block_init_level <= 0) ps.block_init_level = 1; else @@ -794,7 +792,7 @@ process_rbrace(bool *spaced_expr, int *d } static void -process_do(bool *force_nl) +process_do(void) { ps.in_stmt_or_decl = false; @@ -805,12 +803,12 @@ process_do(bool *force_nl) ps.want_blank = false; } - *force_nl = true; /* following stuff must go onto new line */ + ps.force_nl = true; parse(psym_do); } static void -process_else(bool *force_nl) +process_else(void) { ps.in_stmt_or_decl = false; @@ -821,7 +819,7 @@ process_else(bool *force_nl) ps.want_blank = false; } - *force_nl = true; /* following stuff must go onto new line */ + ps.force_nl = true; parse(psym_else); } @@ -860,7 +858,7 @@ process_type(int *decl_ind, bool *tabs_t static void process_ident(lexer_symbol lsym, int decl_ind, bool tabs_to_var, - bool *spaced_expr, bool *force_nl, stmt_head hd) + bool *spaced_expr, stmt_head hd) { if (ps.in_decl) { if (lsym == lsym_funcname) { @@ -882,7 +880,7 @@ process_ident(lexer_symbol lsym, int dec } else if (*spaced_expr && ps.nparen == 0) { *spaced_expr = false; - *force_nl = true; + ps.force_nl = true; ps.next_unary = true; ps.in_stmt_or_decl = false; parse_stmt_head(hd); @@ -907,7 +905,7 @@ process_period(void) } static void -process_comma(int decl_ind, bool tabs_to_var, bool *force_nl) +process_comma(int decl_ind, bool tabs_to_var) { ps.want_blank = code.s != code.e; /* only put blank after comma if comma * does not start the line */ @@ -929,7 +927,7 @@ process_comma(int decl_ind, bool tabs_to if (break_comma && (opt.break_after_comma || ind_add(compute_code_indent(), code.s, code.e) >= opt.max_line_length - varname_len)) - *force_nl = true; + ps.force_nl = true; } } @@ -1058,7 +1056,6 @@ process_preprocessing(void) __dead static void main_loop(void) { - bool force_nl = false; /* when true, code must be broken */ bool last_else = false; /* true iff last keyword was an else */ int decl_ind = 0; /* current indentation for declarations */ int di_stack[20]; /* a stack of structure indentation levels */ @@ -1079,7 +1076,7 @@ main_loop(void) lexer_symbol lsym = lexi(); if (lsym == lsym_if && last_else && opt.else_if) - force_nl = false; + ps.force_nl = false; last_else = false; if (lsym == lsym_eof) { @@ -1089,9 +1086,9 @@ main_loop(void) if (lsym == lsym_newline || lsym == lsym_form_feed || lsym == lsym_preprocessing) - force_nl = false; + ps.force_nl = false; else if (lsym != lsym_comment) { - maybe_break_line(lsym, &force_nl); + maybe_break_line(lsym); ps.in_stmt_or_decl = true; /* add an extra level of indentation; * turned off again by a ';' or '}' */ if (com.s != com.e) @@ -1115,7 +1112,7 @@ main_loop(void) break; case lsym_rparen_or_rbracket: - process_rparen_or_rbracket(&spaced_expr, &force_nl, hd); + process_rparen_or_rbracket(&spaced_expr, hd); break; case lsym_unary_op: @@ -1139,16 +1136,16 @@ main_loop(void) goto copy_token; case lsym_colon: - process_colon(&quest_level, &force_nl, &seen_case); + process_colon(&quest_level, &seen_case); break; case lsym_semicolon: process_semicolon(&seen_case, &quest_level, decl_ind, tabs_to_var, - &spaced_expr, hd, &force_nl); + &spaced_expr, hd); break; case lsym_lbrace: - process_lbrace(&force_nl, &spaced_expr, hd, di_stack, + process_lbrace(&spaced_expr, hd, di_stack, (int)array_length(di_stack), &decl_ind); break; @@ -1179,11 +1176,11 @@ main_loop(void) goto copy_token; case lsym_do: - process_do(&force_nl); + process_do(); goto copy_token; case lsym_else: - process_else(&force_nl); + process_else(); last_else = true; goto copy_token; @@ -1206,8 +1203,7 @@ main_loop(void) case lsym_word: case lsym_funcname: case lsym_return: - process_ident(lsym, decl_ind, tabs_to_var, &spaced_expr, - &force_nl, hd); + process_ident(lsym, decl_ind, tabs_to_var, &spaced_expr, hd); copy_token: copy_token(); if (lsym != lsym_funcname) @@ -1219,7 +1215,7 @@ main_loop(void) break; case lsym_comma: - process_comma(decl_ind, tabs_to_var, &force_nl); + process_comma(decl_ind, tabs_to_var); break; case lsym_preprocessing: Index: src/usr.bin/indent/indent.h diff -u src/usr.bin/indent/indent.h:1.113 src/usr.bin/indent/indent.h:1.114 --- src/usr.bin/indent/indent.h:1.113 Thu May 11 09:28:53 2023 +++ src/usr.bin/indent/indent.h Thu May 11 10:51:34 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: indent.h,v 1.113 2023/05/11 09:28:53 rillig Exp $ */ +/* $NetBSD: indent.h,v 1.114 2023/05/11 10:51:34 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD @@ -277,6 +277,10 @@ extern struct parser_state { * prefixed by a blank. (Said prefixing is * ignored in some cases.) */ + bool force_nl; /* when true, the following token goes to the + * next line, unless it is a '{' and + * opt.brace_right is set. */ + int line_start_nparen; /* the number of parentheses or brackets that * were already open at the beginning of the * current line; used to indent within Index: src/usr.bin/indent/lexi.c diff -u src/usr.bin/indent/lexi.c:1.173 src/usr.bin/indent/lexi.c:1.174 --- src/usr.bin/indent/lexi.c:1.173 Thu May 11 09:28:53 2023 +++ src/usr.bin/indent/lexi.c Thu May 11 10:51:34 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: lexi.c,v 1.173 2023/05/11 09:28:53 rillig Exp $ */ +/* $NetBSD: lexi.c,v 1.174 2023/05/11 10:51:34 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -43,7 +43,7 @@ static char sccsid[] = "@(#)lexi.c 8.1 ( #include <sys/cdefs.h> #if defined(__NetBSD__) -__RCSID("$NetBSD: lexi.c,v 1.173 2023/05/11 09:28:53 rillig Exp $"); +__RCSID("$NetBSD: lexi.c,v 1.174 2023/05/11 10:51:34 rillig Exp $"); #elif defined(__FreeBSD__) __FBSDID("$FreeBSD: head/usr.bin/indent/lexi.c 337862 2018-08-15 18:19:45Z pstef $"); #endif @@ -321,6 +321,7 @@ debug_lexi(lexer_symbol lsym) debug_ps_bool(next_unary); debug_ps_bool(is_function_definition); debug_ps_bool(want_blank); + debug_ps_bool(force_nl); debug_ps_int(line_start_nparen); debug_ps_int(nparen); debug_ps_paren(&prev_ps);