Module Name: src
Committed By: rillig
Date: Fri Jan 12 08:33:39 UTC 2024
Modified Files:
src/usr.bin/xlint/lint1: cgram.y
Log Message:
lint: clean up grammar for array size
To generate a diff of this commit:
cvs rdiff -u -r1.480 -r1.481 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.480 src/usr.bin/xlint/lint1/cgram.y:1.481
--- src/usr.bin/xlint/lint1/cgram.y:1.480 Thu Jan 11 23:26:39 2024
+++ src/usr.bin/xlint/lint1/cgram.y Fri Jan 12 08:33:39 2024
@@ -1,5 +1,5 @@
%{
-/* $NetBSD: cgram.y,v 1.480 2024/01/11 23:26:39 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.481 2024/01/12 08:33:39 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.480 2024/01/11 23:26:39 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.481 2024/01/12 08:33:39 rillig Exp $");
#endif
#include <limits.h>
@@ -363,7 +363,6 @@ is_either(const char *s, const char *a,
%type <y_parameter_list> param_list
/* No type for id_list_lparen. */
%type <y_array_size> array_size_opt
-%type <y_tnode> array_size
%type <y_sym> identifier_list
%type <y_type> type_name
%type <y_sym> abstract_declaration
@@ -1461,28 +1460,26 @@ array_size_opt:
$$.has_dim = false; /* TODO: maybe change to true */
$$.dim = 0; /* just as a placeholder */
}
-| array_size {
- $$.has_dim = true;
- $$.dim = $1 == NULL ? 0 : to_int_constant($1, false);
- }
-;
-
-array_size:
- type_qualifier_list_opt T_SCLASS constant_expression {
+| type_qualifier_list_opt T_SCLASS constant_expression {
/* C11 6.7.6.3p7 */
if ($2 != STATIC)
yyerror("Bad attribute");
/* static array size requires C11 or later */
c11ism(343);
- $$ = $3;
+ $$.has_dim = true;
+ $$.dim = $3 == NULL ? 0 : to_int_constant($3, false);
}
| type_qualifier {
/* C11 6.7.6.2 */
if (!$1.tq_restrict)
yyerror("Bad attribute");
- $$ = NULL;
+ $$.has_dim = true;
+ $$.dim = 0;
+ }
+| constant_expression {
+ $$.has_dim = true;
+ $$.dim = $1 == NULL ? 0 : to_int_constant($1, false);
}
-| constant_expression
;
identifier_list: /* C99 6.7.5 */