Module Name: src
Committed By: rillig
Date: Sat Jan 13 11:24:57 UTC 2024
Modified Files:
src/usr.bin/xlint/lint1: cgram.y init.c
Log Message:
lint: clean up grammar for initializers
To generate a diff of this commit:
cvs rdiff -u -r1.482 -r1.483 src/usr.bin/xlint/lint1/cgram.y
cvs rdiff -u -r1.255 -r1.256 src/usr.bin/xlint/lint1/init.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/xlint/lint1/cgram.y
diff -u src/usr.bin/xlint/lint1/cgram.y:1.482 src/usr.bin/xlint/lint1/cgram.y:1.483
--- src/usr.bin/xlint/lint1/cgram.y:1.482 Sat Jan 13 01:23:39 2024
+++ src/usr.bin/xlint/lint1/cgram.y Sat Jan 13 11:24:57 2024
@@ -1,5 +1,5 @@
%{
-/* $NetBSD: cgram.y,v 1.482 2024/01/13 01:23:39 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.483 2024/01/13 11:24:57 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.482 2024/01/13 01:23:39 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.483 2024/01/13 11:24:57 rillig Exp $");
#endif
#include <limits.h>
@@ -295,7 +295,6 @@ is_either(const char *s, const char *a,
%type <y_generic> generic_assoc_list
%type <y_generic> generic_association
%type <y_tnode> postfix_expression
-/* No type for comma_opt. */
%type <y_tnode> gcc_statement_expr_list
%type <y_tnode> gcc_statement_expr_item
%type <y_op> point_or_arrow
@@ -373,7 +372,6 @@ is_either(const char *s, const char *a,
/* No type for braced_initializer. */
/* No type for initializer. */
/* No type for initializer_list. */
-/* No type for initializer_list_item. */
/* No type for designation. */
/* No type for designator_list. */
/* No type for designator. */
@@ -591,11 +589,6 @@ postfix_expression:
}
;
-comma_opt: /* helper for 'postfix_expression' */
- /* empty */
-| T_COMMA
-;
-
/*
* The inner part of a GCC statement-expression of the form ({ ... }).
*
@@ -1636,7 +1629,8 @@ braced_initializer:
c23ism(353);
}
/* K&R ---, C90 ---, C99 6.7.8, C11 6.7.9, C23 6.7.10 */
-| init_lbrace initializer_list comma_opt init_rbrace
+| init_lbrace initializer_list init_rbrace
+| init_lbrace initializer_list T_COMMA init_rbrace
;
initializer: /* C99 6.7.8 "Initialization" */
@@ -1646,23 +1640,21 @@ initializer: /* C99 6.7.8 "Initializat
| init_lbrace init_rbrace {
/* XXX: Empty braces are not covered by C99 6.7.8. */
}
-| init_lbrace initializer_list comma_opt init_rbrace
+| init_lbrace initializer_list init_rbrace
+| init_lbrace initializer_list T_COMMA init_rbrace
/* XXX: What is this error handling for? */
| error
;
initializer_list: /* C99 6.7.8 "Initialization" */
- initializer_list_item
-| initializer_list T_COMMA initializer_list_item
-;
-
-initializer_list_item: /* helper */
- designation initializer
-| initializer
+ initializer
+| designation initializer
+| initializer_list T_COMMA initializer
+| initializer_list T_COMMA designation initializer
;
designation: /* C99 6.7.8 "Initialization" */
- /* empty */ {
+ {
begin_designation();
} designator_list T_ASSIGN
| identifier T_COLON {
Index: src/usr.bin/xlint/lint1/init.c
diff -u src/usr.bin/xlint/lint1/init.c:1.255 src/usr.bin/xlint/lint1/init.c:1.256
--- src/usr.bin/xlint/lint1/init.c:1.255 Thu Jan 11 23:26:39 2024
+++ src/usr.bin/xlint/lint1/init.c Sat Jan 13 11:24:57 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: init.c,v 1.255 2024/01/11 23:26:39 rillig Exp $ */
+/* $NetBSD: init.c,v 1.256 2024/01/13 11:24:57 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -38,7 +38,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID)
-__RCSID("$NetBSD: init.c,v 1.255 2024/01/11 23:26:39 rillig Exp $");
+__RCSID("$NetBSD: init.c,v 1.256 2024/01/13 11:24:57 rillig Exp $");
#endif
#include <stdlib.h>
@@ -992,10 +992,9 @@ begin_designation(void)
if (in->in_err)
return;
- brace_level *bl = in->in_brace_level;
- lint_assert(bl != NULL);
- bl->bl_designation.dn_len = 0;
- designation_debug(&bl->bl_designation);
+ designation *dn = &in->in_brace_level->bl_designation;
+ dn->dn_len = 0;
+ designation_debug(dn);
}
void