Module Name: src
Committed By: rillig
Date: Thu Feb 8 19:32:12 UTC 2024
Modified Files:
src/usr.bin/xlint/lint1: cgram.y
Log Message:
lint: clean up comments, add debug output for Bison
To generate a diff of this commit:
cvs rdiff -u -r1.487 -r1.488 src/usr.bin/xlint/lint1/cgram.y
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/xlint/lint1/cgram.y
diff -u src/usr.bin/xlint/lint1/cgram.y:1.487 src/usr.bin/xlint/lint1/cgram.y:1.488
--- src/usr.bin/xlint/lint1/cgram.y:1.487 Mon Feb 5 23:11:22 2024
+++ src/usr.bin/xlint/lint1/cgram.y Thu Feb 8 19:32:12 2024
@@ -1,5 +1,5 @@
%{
-/* $NetBSD: cgram.y,v 1.487 2024/02/05 23:11:22 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.488 2024/02/08 19:32:12 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID)
-__RCSID("$NetBSD: cgram.y,v 1.487 2024/02/05 23:11:22 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.488 2024/02/08 19:32:12 rillig Exp $");
#endif
#include <limits.h>
@@ -85,18 +85,6 @@ clear_warning_flags_loc(const char *file
static void
save_warning_flags_loc(const char *file, size_t line)
{
- /*
- * There used to be an assertion that saved_lwarn is
- * LWARN_NOTHING_SAVED here, but that triggered for the following
- * code:
- *
- * void function(int x) { if (x > 0) if (x > 1) return; }
- *
- * It didn't trigger if the inner 'if' was enclosed in braces though.
- *
- * TODO: If actually needed, add support for nested suppression of
- * warnings.
- */
debug_step("%s:%zu: saving flags %d", file, line, lwarn);
saved_lwarn = lwarn;
}
@@ -108,10 +96,6 @@ restore_warning_flags_loc(const char *fi
if (saved_lwarn != LWARN_NOTHING_SAVED) {
lwarn = saved_lwarn;
debug_step("%s:%zu: restoring flags %d", file, line, lwarn);
- /*
- * Do not set 'saved_lwarn = LWARN_NOTHING_SAVED' here, to
- * avoid triggering the assertion in save_warning_flags_loc.
- */
} else
clear_warning_flags_loc(file, line);
}
@@ -179,6 +163,12 @@ is_either(const char *s, const char *a,
%printer {
fprintf(yyo, "%s", function_specifier_name($$));
} <y_function_specifier>
+%printer {
+ size_t n = 0;
+ for (const sym_t *p = $$.first; p != NULL; p = p->s_next)
+ n++;
+ fprintf(yyo, "%zu parameter%s", n, n != 1 ? "s" : "");
+} <y_parameter_list>
%printer { fprintf(yyo, "%s", type_name($$)); } <y_type>
%printer {
if ($$ == NULL)
@@ -196,6 +186,19 @@ is_either(const char *s, const char *a,
%printer { fprintf(yyo, "%s", type_name($$->ga_arg)); } <y_generic>
%printer { fprintf(yyo, "%d", $$.dim); } <y_array_size>
%printer { fprintf(yyo, "%s", $$ ? "yes" : "no"); } <y_in_system_header>
+%printer {
+ if ($$.dn_len == 0)
+ fprintf(yyo, "(empty)");
+ for (size_t i = 0; i < $$.dn_len; i++) {
+ const designator *dr = $$.dn_items + i;
+ if (dr->dr_kind == DK_MEMBER)
+ fprintf(yyo, ".%s", dr->dr_member->s_name);
+ else if (dr->dr_kind == DK_SUBSCRIPT)
+ fprintf(yyo, "[%zu]", dr->dr_subscript);
+ else
+ fprintf(yyo, "<scalar>");
+ }
+} <y_designation>
*/
%token T_LBRACE T_RBRACE T_LBRACK T_RBRACK T_LPAREN T_RPAREN
@@ -1042,7 +1045,7 @@ braced_member_declaration_list: /* see C
member_declaration_list_with_rbrace: /* see C99 6.7.2.1 */
member_declaration_list T_RBRACE
| T_RBRACE {
- /* XXX: This is not allowed by any C standard. */
+ /* XXX: Allowed since C23. */
$$ = NULL;
}
;