Module Name:    src
Committed By:   rillig
Date:           Sun Oct 31 20:59:26 UTC 2021

Modified Files:
        src/usr.bin/indent: lexi.c

Log Message:
indent: remove redundant keyword.is_type

It is still confusing that not all type keywords end up as lsym_type.
Those that occur inside parentheses end up as identifiers instead. To
see whether an identifier is a typename, query ps.curr_is_type and
ps.prev_is_type.

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.126 -r1.127 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/lexi.c
diff -u src/usr.bin/indent/lexi.c:1.126 src/usr.bin/indent/lexi.c:1.127
--- src/usr.bin/indent/lexi.c:1.126	Sun Oct 31 20:40:42 2021
+++ src/usr.bin/indent/lexi.c	Sun Oct 31 20:59:26 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: lexi.c,v 1.126 2021/10/31 20:40:42 rillig Exp $	*/
+/*	$NetBSD: lexi.c,v 1.127 2021/10/31 20:59:26 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.126 2021/10/31 20:40:42 rillig Exp $");
+__RCSID("$NetBSD: lexi.c,v 1.127 2021/10/31 20:59:26 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/lexi.c 337862 2018-08-15 18:19:45Z pstef $");
 #endif
@@ -51,57 +51,61 @@ __FBSDID("$FreeBSD: head/usr.bin/indent/
 #include <ctype.h>
 #include <stdlib.h>
 #include <string.h>
-#include <assert.h>
 
 #include "indent.h"
 
+/*
+ * While inside lexi_alnum, this constant just marks a type, independently of
+ * the parentheses level.
+ */
+#define lsym_type lsym_type_at_paren_level_0
+
 /* must be sorted alphabetically, is used in binary search */
 static const struct keyword {
     const char *name;
     lexer_symbol lsym;
-    bool is_type;
 } keywords[] = {
-    {"_Bool", lsym_eof, true},
-    {"_Complex", lsym_eof, true},
-    {"_Imaginary", lsym_eof, true},
-    {"auto", lsym_storage_class, false},
-    {"bool", lsym_eof, true},
-    {"break", lsym_ident, false},
-    {"case", lsym_case_label, false},
-    {"char", lsym_eof, true},
-    {"complex", lsym_eof, true},
-    {"const", lsym_eof, true},
-    {"continue", lsym_ident, false},
-    {"default", lsym_case_label, false},
-    {"do", lsym_do, false},
-    {"double", lsym_eof, true},
-    {"else", lsym_else, false},
-    {"enum", lsym_tag, false},
-    {"extern", lsym_storage_class, false},
-    {"float", lsym_eof, true},
-    {"for", lsym_for, false},
-    {"goto", lsym_ident, false},
-    {"if", lsym_if, false},
-    {"imaginary", lsym_eof, true},
-    {"inline", lsym_ident, false},
-    {"int", lsym_eof, true},
-    {"long", lsym_eof, true},
-    {"offsetof", lsym_offsetof, false},
-    {"register", lsym_storage_class, false},
-    {"restrict", lsym_ident, false},
-    {"return", lsym_ident, false},
-    {"short", lsym_eof, true},
-    {"signed", lsym_eof, true},
-    {"sizeof", lsym_sizeof, false},
-    {"static", lsym_storage_class, false},
-    {"struct", lsym_tag, false},
-    {"switch", lsym_switch, false},
-    {"typedef", lsym_typedef, false},
-    {"union", lsym_tag, false},
-    {"unsigned", lsym_eof, true},
-    {"void", lsym_eof, true},
-    {"volatile", lsym_eof, true},
-    {"while", lsym_while, false}
+    {"_Bool", lsym_type},
+    {"_Complex", lsym_type},
+    {"_Imaginary", lsym_type},
+    {"auto", lsym_storage_class},
+    {"bool", lsym_type},
+    {"break", lsym_ident},
+    {"case", lsym_case_label},
+    {"char", lsym_type},
+    {"complex", lsym_type},
+    {"const", lsym_type},
+    {"continue", lsym_ident},
+    {"default", lsym_case_label},
+    {"do", lsym_do},
+    {"double", lsym_type},
+    {"else", lsym_else},
+    {"enum", lsym_tag},
+    {"extern", lsym_storage_class},
+    {"float", lsym_type},
+    {"for", lsym_for},
+    {"goto", lsym_ident},
+    {"if", lsym_if},
+    {"imaginary", lsym_type},
+    {"inline", lsym_ident},
+    {"int", lsym_type},
+    {"long", lsym_type},
+    {"offsetof", lsym_offsetof},
+    {"register", lsym_storage_class},
+    {"restrict", lsym_ident},
+    {"return", lsym_ident},
+    {"short", lsym_type},
+    {"signed", lsym_type},
+    {"sizeof", lsym_sizeof},
+    {"static", lsym_storage_class},
+    {"struct", lsym_tag},
+    {"switch", lsym_switch},
+    {"typedef", lsym_typedef},
+    {"union", lsym_tag},
+    {"unsigned", lsym_type},
+    {"void", lsym_type},
+    {"volatile", lsym_type},
+    {"while", lsym_while}
 };
 
 static struct {
@@ -499,11 +503,9 @@ lexi_alnum(void)
 	}
 
     } else {			/* we have a keyword */
-	ps.curr_is_type = kw->is_type;
+	ps.curr_is_type = kw->lsym == lsym_type;
 	ps.next_unary = true;
-
-	assert((kw->lsym == lsym_eof) == kw->is_type);
-	if (kw->lsym != lsym_eof && kw->lsym != lsym_tag)
+	if (kw->lsym != lsym_tag && kw->lsym != lsym_type)
 	    return kw->lsym;
 
 found_typename:

Reply via email to