diff options
| -rw-r--r-- | usr.bin/indent/indent.c | 42 | ||||
| -rw-r--r-- | usr.bin/indent/io.c | 8 | ||||
| -rw-r--r-- | usr.bin/indent/lexi.c | 16 |
3 files changed, 45 insertions, 21 deletions
diff --git a/usr.bin/indent/indent.c b/usr.bin/indent/indent.c index 3f2c1ae0adc..130677bc552 100644 --- a/usr.bin/indent/indent.c +++ b/usr.bin/indent/indent.c @@ -1,4 +1,4 @@ -/* $NetBSD: indent.c,v 1.309 2023/05/23 16:53:57 rillig Exp $ */ +/* $NetBSD: indent.c,v 1.310 2023/05/23 18:16:28 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: indent.c,v 1.309 2023/05/23 16:53:57 rillig Exp $"); +__RCSID("$NetBSD: indent.c,v 1.310 2023/05/23 18:16:28 rillig Exp $"); #include <sys/param.h> #include <err.h> @@ -372,6 +372,36 @@ update_ps_decl_ptr(lexer_symbol lsym) } } +static void +update_ps_in_enum(lexer_symbol lsym) +{ + switch (ps.in_enum) { + case in_enum_no: + if (lsym == lsym_tag && token.st[0] == 'e') + ps.in_enum = in_enum_enum; + break; + case in_enum_enum: + if (lsym == lsym_type_outside_parentheses + || lsym == lsym_type_in_parentheses) + ps.in_enum = in_enum_type; + else if (lsym == lsym_lbrace) + ps.in_enum = in_enum_brace; + else + ps.in_enum = in_enum_no; + break; + case in_enum_type: + if (lsym == lsym_lbrace) + ps.in_enum = in_enum_brace; + else + ps.in_enum = in_enum_no; + break; + case in_enum_brace: + if (lsym == lsym_rbrace) + ps.in_enum = in_enum_no; + break; + } +} + static int process_eof(void) { @@ -1166,7 +1196,9 @@ indent(void) if (lsym == lsym_newline || lsym == lsym_preprocessing) ps.force_nl = false; - else if (lsym != lsym_comment) { + else if (lsym == lsym_comment) { + /* no special processing */ + } else { maybe_break_line(lsym); /* * Add an extra level of indentation; turned off again @@ -1175,10 +1207,10 @@ indent(void) ps.in_stmt_or_decl = true; if (com.len > 0) move_com_to_code(lsym); + update_ps_decl_ptr(lsym); + update_ps_in_enum(lsym); } - update_ps_decl_ptr(lsym); - process_lsym(lsym); debug_parser_state(); diff --git a/usr.bin/indent/io.c b/usr.bin/indent/io.c index 6d42790b1f2..47ff818dd08 100644 --- a/usr.bin/indent/io.c +++ b/usr.bin/indent/io.c @@ -1,4 +1,4 @@ -/* $NetBSD: io.c,v 1.186 2023/05/23 12:12:29 rillig Exp $ */ +/* $NetBSD: io.c,v 1.187 2023/05/23 18:16:28 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: io.c,v 1.186 2023/05/23 12:12:29 rillig Exp $"); +__RCSID("$NetBSD: io.c,v 1.187 2023/05/23 18:16:28 rillig Exp $"); #include <stdio.h> @@ -350,7 +350,9 @@ compute_code_indent(void) int base_ind = ps.ind_level * opt.indent_size; if (ps.line_start_nparen == 0) { - if (ps.in_stmt_cont && ps.in_enum != in_enum_brace) + if (ps.in_enum == in_enum_brace) + return base_ind; + if (ps.in_stmt_cont) return base_ind + opt.continuation_indent; return base_ind; } diff --git a/usr.bin/indent/lexi.c b/usr.bin/indent/lexi.c index c121d3e1092..11f73147ef4 100644 --- a/usr.bin/indent/lexi.c +++ b/usr.bin/indent/lexi.c @@ -1,4 +1,4 @@ -/* $NetBSD: lexi.c,v 1.205 2023/05/23 12:12:29 rillig Exp $ */ +/* $NetBSD: lexi.c,v 1.206 2023/05/23 18:16:28 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: lexi.c,v 1.205 2023/05/23 12:12:29 rillig Exp $"); +__RCSID("$NetBSD: lexi.c,v 1.206 2023/05/23 18:16:28 rillig Exp $"); #include <stdlib.h> #include <string.h> @@ -396,8 +396,6 @@ lexi_alnum(void) if (is_typename()) { lsym = lsym_type_in_parentheses; ps.next_unary = true; - if (ps.in_enum == in_enum_enum) - ps.in_enum = in_enum_type; found_typename: if (ps.nparen > 0) { /* inside parentheses: cast, param list, offsetof or @@ -407,11 +405,8 @@ found_typename: } if (ps.prev_token != lsym_period && ps.prev_token != lsym_unary_op) { - if (kw != NULL && kw->lsym == lsym_tag) { - if (token.st[0] == 'e' /* enum */) - ps.in_enum = in_enum_enum; + if (kw != NULL && kw->lsym == lsym_tag) return lsym_tag; - } if (ps.nparen == 0) return lsym_type_outside_parentheses; } @@ -673,11 +668,6 @@ lexi(void) next_unary = true; } - if (ps.in_enum == in_enum_enum || ps.in_enum == in_enum_type) - ps.in_enum = lsym == lsym_lbrace ? in_enum_brace : in_enum_no; - if (lsym == lsym_rbrace) - ps.in_enum = in_enum_no; - ps.next_unary = next_unary; return lsym; |
