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; } ;