Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/indent indent: clean up detection of whether parenth...



details:   https://anonhg.NetBSD.org/src/rev/c7899a4e1b9d
branches:  trunk
changeset: 375380:c7899a4e1b9d
user:      rillig <rillig%NetBSD.org@localhost>
date:      Mon May 15 22:52:21 2023 +0000

description:
indent: clean up detection of whether parentheses form a cast

No functional change.

diffstat:

 usr.bin/indent/debug.c  |  28 ++++++++++++++--------------
 usr.bin/indent/indent.c |  21 +++++++++------------
 usr.bin/indent/indent.h |  12 +++++++-----
 usr.bin/indent/lexi.c   |   8 ++++----
 4 files changed, 34 insertions(+), 35 deletions(-)

diffs (198 lines):

diff -r 95fb50944f93 -r c7899a4e1b9d usr.bin/indent/debug.c
--- a/usr.bin/indent/debug.c    Mon May 15 22:35:41 2023 +0000
+++ b/usr.bin/indent/debug.c    Mon May 15 22:52:21 2023 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: debug.c,v 1.8 2023/05/15 13:37:16 rillig Exp $ */
+/*     $NetBSD: debug.c,v 1.9 2023/05/15 22:52:21 rillig Exp $ */
 
 /*-
  * Copyright (c) 2023 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: debug.c,v 1.8 2023/05/15 13:37:16 rillig Exp $");
+__RCSID("$NetBSD: debug.c,v 1.9 2023/05/15 22:52:21 rillig Exp $");
 
 #include <stdarg.h>
 
@@ -99,19 +99,25 @@ const char *const psym_name[] = {
     "while_expr",
 };
 
-static const char *declaration_name[] = {
+static const char *const declaration_name[] = {
     "no",
     "begin",
     "end",
 };
 
-static const char *in_enum_name[] = {
+static const char *const in_enum_name[] = {
     "no",
     "enum",
     "type",
     "brace",
 };
 
+const char *const paren_level_cast_name[] = {
+    "(unknown cast)",
+    "(maybe cast)",
+    "(no cast)",
+};
+
 void
 debug_printf(const char *fmt, ...)
 {
@@ -208,12 +214,9 @@ ps_paren_has_changed(const struct parser
     if (prev_ps->nparen != ps.nparen)
        return true;
 
-    for (int i = 0; i < ps.nparen; i++) {
-       if (curr[i].indent != prev[i].indent ||
-               curr[i].maybe_cast != prev[i].maybe_cast ||
-               curr[i].no_cast != prev[i].no_cast)
+    for (int i = 0; i < ps.nparen; i++)
+       if (curr[i].indent != prev[i].indent || curr[i].cast != prev[i].cast)
            return true;
-    }
     return false;
 }
 
@@ -225,11 +228,8 @@ debug_ps_paren(const struct parser_state
 
     debug_printf("           ps.paren:");
     for (int i = 0; i < ps.nparen; i++) {
-       const paren_level_props *props = ps.paren + i;
-       const char *cast = props->no_cast ? "(no cast)"
-           : props->maybe_cast ? "(cast)"
-           : "";
-       debug_printf(" %s%d", cast, props->indent);
+       debug_printf(" %s%d",
+           paren_level_cast_name[ps.paren[i].cast], ps.paren[i].indent);
     }
     if (ps.nparen == 0)
        debug_printf(" none");
diff -r 95fb50944f93 -r c7899a4e1b9d usr.bin/indent/indent.c
--- a/usr.bin/indent/indent.c   Mon May 15 22:35:41 2023 +0000
+++ b/usr.bin/indent/indent.c   Mon May 15 22:52:21 2023 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: indent.c,v 1.285 2023/05/15 22:35:41 rillig Exp $      */
+/*     $NetBSD: indent.c,v 1.286 2023/05/15 22:52:21 rillig Exp $      */
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: indent.c,v 1.285 2023/05/15 22:35:41 rillig Exp $");
+__RCSID("$NetBSD: indent.c,v 1.286 2023/05/15 22:52:21 rillig Exp $");
 
 #include <sys/param.h>
 #include <err.h>
@@ -443,7 +443,7 @@ process_lparen_or_lbracket(void)
     buf_add_char(&code, token.st[0]);
 
     int indent = ind_add(0, code.st, code.len);
-    bool no_cast = false;
+    enum paren_level_cast cast = cast_unknown;
 
     if (opt.extra_expr_indent && !opt.lineup_to_parens
            && ps.spaced_expr_psym != psym_0 && ps.nparen == 1
@@ -465,13 +465,12 @@ process_lparen_or_lbracket(void)
 
     if (ps.prev_token == lsym_offsetof || ps.prev_token == lsym_sizeof
            || ps.is_function_definition)
-       no_cast = true;
+       cast = cast_no;
 
     ps.paren[ps.nparen - 1].indent = (short)indent;
-    ps.paren[ps.nparen - 1].maybe_cast = false;
-    ps.paren[ps.nparen - 1].no_cast = no_cast;
+    ps.paren[ps.nparen - 1].cast = cast;
     debug_println("paren_indents[%d] is now %s%d",
-       ps.nparen - 1, no_cast ? "(no cast)" : "", indent);
+       ps.nparen - 1, paren_level_cast_name[cast], indent);
 }
 
 static void
@@ -482,13 +481,11 @@ process_rparen_or_rbracket(void)
        goto unbalanced;
     }
 
-    bool maybe_cast = ps.paren[ps.nparen - 1].maybe_cast;
-    bool no_cast = ps.paren[ps.nparen - 1].no_cast;
+    enum paren_level_cast cast = ps.paren[--ps.nparen].cast;
     if (ps.decl_on_line && !ps.block_init)
-       no_cast = true;
-    ps.nparen--;
+       cast = cast_no;
 
-    if (maybe_cast && !no_cast) {
+    if (cast == cast_maybe) {
        ps.next_unary = true;
        ps.want_blank = opt.space_after_cast;
     } else
diff -r 95fb50944f93 -r c7899a4e1b9d usr.bin/indent/indent.h
--- a/usr.bin/indent/indent.h   Mon May 15 22:35:41 2023 +0000
+++ b/usr.bin/indent/indent.h   Mon May 15 22:52:21 2023 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: indent.h,v 1.141 2023/05/15 20:30:20 rillig Exp $      */
+/*     $NetBSD: indent.h,v 1.142 2023/05/15 22:52:21 rillig Exp $      */
 
 /*-
  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -238,10 +238,11 @@ typedef struct paren_level_props {
     short indent;              /* indentation of the operand/argument,
                                 * relative to the enclosing statement; if
                                 * negative, reflected at -1 */
-    bool maybe_cast;           /* whether the parentheses may form a type
-                                * cast */
-    bool no_cast;              /* whether the parentheses definitely do not
-                                * form a type cast */
+    enum paren_level_cast {
+       cast_unknown,
+       cast_maybe,
+       cast_no,
+    } cast;                    /* whether the parentheses form a type cast */
 } paren_level_props;
 
 /*
@@ -389,6 +390,7 @@ void debug_parse_stack(const char *);
 void debug_buffers(void);
 extern const char *const lsym_name[];
 extern const char *const psym_name[];
+extern const char *const paren_level_cast_name[];
 #else
 #define debug_noop() do { } while (false)
 #define        debug_printf(fmt, ...) debug_noop()
diff -r 95fb50944f93 -r c7899a4e1b9d usr.bin/indent/lexi.c
--- a/usr.bin/indent/lexi.c     Mon May 15 22:35:41 2023 +0000
+++ b/usr.bin/indent/lexi.c     Mon May 15 22:52:21 2023 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lexi.c,v 1.191 2023/05/15 18:22:40 rillig Exp $        */
+/*     $NetBSD: lexi.c,v 1.192 2023/05/15 22:52:21 rillig Exp $        */
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: lexi.c,v 1.191 2023/05/15 18:22:40 rillig Exp $");
+__RCSID("$NetBSD: lexi.c,v 1.192 2023/05/15 22:52:21 rillig Exp $");
 
 #include <stdlib.h>
 #include <string.h>
@@ -401,8 +401,8 @@ lexi_alnum(void)
 found_typename:
        if (ps.nparen > 0) {
            /* inside parentheses: cast, param list, offsetof or sizeof */
-           if (!ps.paren[ps.nparen - 1].no_cast)
-               ps.paren[ps.nparen - 1].maybe_cast = true;
+           if (ps.paren[ps.nparen - 1].cast == cast_unknown)
+               ps.paren[ps.nparen - 1].cast = cast_maybe;
        }
        if (ps.prev_token != lsym_period && ps.prev_token != lsym_unary_op) {
            if (kw != NULL && kw->lsym == lsym_tag) {



Home | Main Index | Thread Index | Old Index