lint: rename dinfo_t members to be more expressive

While here, sync redundant but diverging comments, split
multi-assignments and initialize the members in declaration order.

No functional change.
This commit is contained in:
rillig 2021-03-17 02:18:03 +00:00
parent 16ce4325a7
commit c026af7a30
2 changed files with 49 additions and 41 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: decl.c,v 1.146 2021/03/17 01:53:21 rillig Exp $ */
/* $NetBSD: decl.c,v 1.147 2021/03/17 02:18:03 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@ -38,7 +38,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
__RCSID("$NetBSD: decl.c,v 1.146 2021/03/17 01:53:21 rillig Exp $");
__RCSID("$NetBSD: decl.c,v 1.147 2021/03/17 02:18:03 rillig Exp $");
#endif
#include <sys/param.h>
@ -222,8 +222,8 @@ add_storage_class(scl_t sc)
dcs->d_inline = true;
return;
}
if (dcs->d_type != NULL || dcs->d_atyp != NOTSPEC ||
dcs->d_smod != NOTSPEC || dcs->d_lmod != NOTSPEC) {
if (dcs->d_type != NULL || dcs->d_abstract_type != NOTSPEC ||
dcs->d_sign_mod != NOTSPEC || dcs->d_rank_mod != NOTSPEC) {
/* storage class after type is obsolescent */
warning(83);
}
@ -261,9 +261,9 @@ add_type(type_t *tp)
* This should not happen with current grammar.
*/
lint_assert(dcs->d_type == NULL);
lint_assert(dcs->d_atyp == NOTSPEC);
lint_assert(dcs->d_lmod == NOTSPEC);
lint_assert(dcs->d_smod == NOTSPEC);
lint_assert(dcs->d_abstract_type == NOTSPEC);
lint_assert(dcs->d_sign_mod == NOTSPEC);
lint_assert(dcs->d_rank_mod == NOTSPEC);
dcs->d_type = tp;
return;
@ -276,14 +276,16 @@ add_type(type_t *tp)
* something like "int struct a ..."
* struct/union/enum with anything else is not allowed
*/
if (dcs->d_type != NULL || dcs->d_atyp != NOTSPEC ||
dcs->d_lmod != NOTSPEC || dcs->d_smod != NOTSPEC) {
if (dcs->d_type != NULL || dcs->d_abstract_type != NOTSPEC ||
dcs->d_rank_mod != NOTSPEC || dcs->d_sign_mod != NOTSPEC) {
/*
* remember that an error must be reported in
* deftyp().
*/
dcs->d_terr = true;
dcs->d_atyp = dcs->d_lmod = dcs->d_smod = NOTSPEC;
dcs->d_abstract_type = NOTSPEC;
dcs->d_sign_mod = NOTSPEC;
dcs->d_rank_mod = NOTSPEC;
}
dcs->d_type = tp;
return;
@ -299,22 +301,22 @@ add_type(type_t *tp)
}
if (t == COMPLEX) {
if (dcs->d_cmod == FLOAT)
if (dcs->d_complex_mod == FLOAT)
t = FCOMPLEX;
else if (dcs->d_cmod == DOUBLE)
else if (dcs->d_complex_mod == DOUBLE)
t = DCOMPLEX;
else {
/* invalid type for _Complex */
error(308);
t = DCOMPLEX; /* just as a fallback */
}
dcs->d_cmod = NOTSPEC;
dcs->d_complex_mod = NOTSPEC;
}
if (t == LONG && dcs->d_lmod == LONG) {
if (t == LONG && dcs->d_rank_mod == LONG) {
/* "long long" or "long ... long" */
t = QUAD;
dcs->d_lmod = NOTSPEC;
dcs->d_rank_mod = NOTSPEC;
if (!quadflg)
/* %s C does not support 'long long' */
c99ism(265, tflag ? "traditional" : "c89");
@ -328,45 +330,48 @@ add_type(type_t *tp)
/* now it can be only a combination of arithmetic types and void */
if (t == SIGNED || t == UNSIGN) {
/* remember specifiers "signed" & "unsigned" in dcs->d_smod */
if (dcs->d_smod != NOTSPEC)
/*
* remember specifiers "signed" & "unsigned" in
* dcs->d_sign_mod
*/
if (dcs->d_sign_mod != NOTSPEC)
/*
* more than one "signed" and/or "unsigned"; print
* an error in deftyp()
*/
dcs->d_terr = true;
dcs->d_smod = t;
dcs->d_sign_mod = t;
} else if (t == SHORT || t == LONG || t == QUAD) {
/*
* remember specifiers "short", "long" and "long long" in
* dcs->d_lmod
* dcs->d_rank_mod
*/
if (dcs->d_lmod != NOTSPEC)
if (dcs->d_rank_mod != NOTSPEC)
/* more than one, print error in deftyp() */
dcs->d_terr = true;
dcs->d_lmod = t;
dcs->d_rank_mod = t;
} else if (t == FLOAT || t == DOUBLE) {
if (dcs->d_lmod == NOTSPEC || dcs->d_lmod == LONG) {
if (dcs->d_cmod != NOTSPEC
|| (t == FLOAT && dcs->d_lmod == LONG))
if (dcs->d_rank_mod == NOTSPEC || dcs->d_rank_mod == LONG) {
if (dcs->d_complex_mod != NOTSPEC
|| (t == FLOAT && dcs->d_rank_mod == LONG))
dcs->d_terr = true;
dcs->d_cmod = t;
dcs->d_complex_mod = t;
} else {
if (dcs->d_atyp != NOTSPEC)
if (dcs->d_abstract_type != NOTSPEC)
dcs->d_terr = true;
dcs->d_atyp = t;
dcs->d_abstract_type = t;
}
} else if (t == PTR) {
dcs->d_type = tp;
} else {
/*
* remember specifiers "void", "char", "int",
* or "_Complex" int dcs->d_atyp
* or "_Complex" in dcs->d_abstract_type
*/
if (dcs->d_atyp != NOTSPEC)
if (dcs->d_abstract_type != NOTSPEC)
/* more than one, print error in deftyp() */
dcs->d_terr = true;
dcs->d_atyp = t;
dcs->d_abstract_type = t;
}
}
@ -701,7 +706,10 @@ void
clrtyp(void)
{
dcs->d_atyp = dcs->d_cmod = dcs->d_smod = dcs->d_lmod = NOTSPEC;
dcs->d_abstract_type = NOTSPEC;
dcs->d_complex_mod = NOTSPEC;
dcs->d_sign_mod = NOTSPEC;
dcs->d_rank_mod = NOTSPEC;
dcs->d_scl = NOSCL;
dcs->d_type = NULL;
dcs->d_const = false;
@ -726,10 +734,10 @@ deftyp(void)
type_t *tp;
scl_t scl;
t = dcs->d_atyp; /* BOOL, CHAR, INT, COMPLEX, VOID */
s = dcs->d_smod; /* SIGNED, UNSIGNED */
l = dcs->d_lmod; /* SHORT, LONG, QUAD */
c = dcs->d_cmod; /* FLOAT, DOUBLE */
t = dcs->d_abstract_type; /* VOID, BOOL, CHAR, INT or COMPLEX */
c = dcs->d_complex_mod; /* FLOAT or DOUBLE */
s = dcs->d_sign_mod; /* SIGNED or UNSIGN */
l = dcs->d_rank_mod; /* SHORT, LONG or QUAD */
tp = dcs->d_type;
scl = dcs->d_scl;
@ -1099,7 +1107,7 @@ declare_bit_field(sym_t *dsym, tspec_t *inout_t, type_t **const inout_tp)
warning(34);
}
}
} else if (t == INT && dcs->d_smod == NOTSPEC) {
} else if (t == INT && dcs->d_sign_mod == NOTSPEC) {
if (pflag && !bitfieldtype_ok) {
/* nonportable bit-field type */
warning(34);

View File

@ -1,4 +1,4 @@
/* $NetBSD: lint1.h,v 1.71 2021/03/17 01:15:31 rillig Exp $ */
/* $NetBSD: lint1.h,v 1.72 2021/03/17 02:18:03 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@ -325,10 +325,10 @@ typedef struct tnode {
*
*/
typedef struct dinfo {
tspec_t d_atyp; /* VOID, CHAR, INT, or COMPLEX */
tspec_t d_cmod; /* FLOAT, or DOUBLE */
tspec_t d_smod; /* SIGNED or UNSIGN */
tspec_t d_lmod; /* SHORT, LONG or QUAD */
tspec_t d_abstract_type;/* VOID, BOOL, CHAR, INT or COMPLEX */
tspec_t d_complex_mod; /* FLOAT or DOUBLE */
tspec_t d_sign_mod; /* SIGNED or UNSIGN */
tspec_t d_rank_mod; /* SHORT, LONG or QUAD */
scl_t d_scl; /* storage class */
type_t *d_type; /* after deftyp() pointer to the type used
for all declarators */