Module Name: src Committed By: rillig Date: Fri Jan 1 11:41:01 UTC 2021
Modified Files: src/usr.bin/xlint/lint1: cgram.y check-msgs.lua decl.c func.c init.c tree.c Log Message: lint: add missing redundant messages in source code To generate a diff of this commit: cvs rdiff -u -r1.126 -r1.127 src/usr.bin/xlint/lint1/cgram.y cvs rdiff -u -r1.3 -r1.4 src/usr.bin/xlint/lint1/check-msgs.lua cvs rdiff -u -r1.93 -r1.94 src/usr.bin/xlint/lint1/decl.c cvs rdiff -u -r1.45 -r1.46 src/usr.bin/xlint/lint1/func.c cvs rdiff -u -r1.49 -r1.50 src/usr.bin/xlint/lint1/init.c cvs rdiff -u -r1.112 -r1.113 src/usr.bin/xlint/lint1/tree.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.126 src/usr.bin/xlint/lint1/cgram.y:1.127 --- src/usr.bin/xlint/lint1/cgram.y:1.126 Fri Jan 1 11:09:40 2021 +++ src/usr.bin/xlint/lint1/cgram.y Fri Jan 1 11:41:01 2021 @@ -1,5 +1,5 @@ %{ -/* $NetBSD: cgram.y,v 1.126 2021/01/01 11:09:40 rillig Exp $ */ +/* $NetBSD: cgram.y,v 1.127 2021/01/01 11:41:01 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -35,7 +35,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: cgram.y,v 1.126 2021/01/01 11:09:40 rillig Exp $"); +__RCSID("$NetBSD: cgram.y,v 1.127 2021/01/01 11:41:01 rillig Exp $"); #endif #include <limits.h> @@ -801,6 +801,7 @@ member_declaration: symtyp = FVFT; /* struct or union member must be named */ if (!Sflag) + /* anonymous struct/union members is a C9X feature */ warning(49); /* add all the members of the anonymous struct/union */ $$ = dcs->d_type->t_str->memb; @@ -810,6 +811,7 @@ member_declaration: symtyp = FVFT; /* struct or union member must be named */ if (!Sflag) + /* anonymous struct/union members is a C9X feature */ warning(49); $$ = dcs->d_type->t_str->memb; /* add all the members of the anonymous struct/union */ @@ -1363,10 +1365,12 @@ range: init_field: T_LBRACK range T_RBRACK { if (!Sflag) + /* array initializer with des.s is a C9X feature */ warning(321); } | point identifier { if (!Sflag) + /* struct or union member name in initializer is ... */ warning(313); push_member($2); } @@ -1380,6 +1384,7 @@ init_field_list: init_by_name: init_field_list T_ASSIGN | identifier T_COLON { + /* GCC style struct or union member name in initializer */ gnuism(315); push_member($1); } @@ -1511,6 +1516,7 @@ stmnt_d_list: stmnt_list | stmnt_d_list declaration_list stmnt_list { if (!Sflag) + /* declarations after statements is a C9X feature */ c99ism(327); } ; @@ -1712,6 +1718,7 @@ for_start: for_exprs: for_start declspecs deftyp notype_init_decls T_SEMI opt_expr T_SEMI opt_expr T_RPAREN { + /* variable declaration in for loop */ c99ism(325); for1(NULL, $6, $8); CLRWFLGS(__FILE__, __LINE__); @@ -1867,6 +1874,7 @@ term: initsym = mktempsym(duptyp($4->tn_type)); mblklev++; blklev++; + /* ({ }) is a GCC extension */ gnuism(320); } comp_stmnt_rbrace T_RPAREN { $$ = getnnode(initsym, 0); @@ -1877,6 +1885,7 @@ term: initsym = mktempsym($3->tn_type); mblklev++; blklev++; + /* ({ }) is a GCC extension */ gnuism(320); } comp_stmnt_rbrace T_RPAREN { $$ = getnnode(initsym, 0); @@ -1971,7 +1980,8 @@ term: idecl(tmp, 1, NULL); } init_lbrace init_expr_list init_rbrace { if (!Sflag) - gnuism(319); + /* compound literals are a C9X/GCC extension */ + gnuism(319); $$ = getnnode(initsym, 0); } ; @@ -2017,6 +2027,7 @@ point_or_arrow: point: T_STROP { if ($1 != POINT) { + /* syntax error '%s' */ error(249, yytext); } } @@ -2039,6 +2050,7 @@ identifier: int yyerror(const char *msg) { + /* syntax error '%s' */ error(249, yytext); if (++sytxerr >= 5) norecover(); Index: src/usr.bin/xlint/lint1/check-msgs.lua diff -u src/usr.bin/xlint/lint1/check-msgs.lua:1.3 src/usr.bin/xlint/lint1/check-msgs.lua:1.4 --- src/usr.bin/xlint/lint1/check-msgs.lua:1.3 Fri Jan 1 01:26:02 2021 +++ src/usr.bin/xlint/lint1/check-msgs.lua Fri Jan 1 11:41:01 2021 @@ -1,5 +1,5 @@ #! /usr/bin/lua --- $NetBSD: check-msgs.lua,v 1.3 2021/01/01 01:26:02 rillig Exp $ +-- $NetBSD: check-msgs.lua,v 1.4 2021/01/01 11:41:01 rillig Exp $ --[[ @@ -45,6 +45,7 @@ local function check_message(fname, line comment = string.gsub(comment, "conv%.", "conversion") comment = string.gsub(comment, "decl%.", "declaration") comment = string.gsub(comment, "defn%.", "definition") + comment = string.gsub(comment, "des%.s", "designators") comment = string.gsub(comment, "expr%.", "expression") comment = string.gsub(comment, "func%.", "function") comment = string.gsub(comment, "incomp%.", "incompatible") @@ -80,11 +81,15 @@ local function collect_errors(fname, msg lineno = lineno + 1 local func, id = line:match("^%s+(%w+)%((%d+)[),]") + id = tonumber(id) if func == "error" or func == "warning" or func == "c99ism" or func == "gnuism" or func == "message" then local comment = prev:match("^%s+/%* (.+) %*/$") if comment ~= nil then - check_message(fname, lineno, tonumber(id), comment, msgs, errors) + check_message(fname, lineno, id, comment, msgs, errors) + else + errors:add("%s:%d: missing comment for %d: /* %s */", + fname, lineno, id, msgs[id]) end end Index: src/usr.bin/xlint/lint1/decl.c diff -u src/usr.bin/xlint/lint1/decl.c:1.93 src/usr.bin/xlint/lint1/decl.c:1.94 --- src/usr.bin/xlint/lint1/decl.c:1.93 Fri Jan 1 09:28:22 2021 +++ src/usr.bin/xlint/lint1/decl.c Fri Jan 1 11:41:01 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: decl.c,v 1.93 2021/01/01 09:28:22 rillig Exp $ */ +/* $NetBSD: decl.c,v 1.94 2021/01/01 11:41:01 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.93 2021/01/01 09:28:22 rillig Exp $"); +__RCSID("$NetBSD: decl.c,v 1.94 2021/01/01 11:41:01 rillig Exp $"); #endif #include <sys/param.h> @@ -302,9 +302,10 @@ add_type(type_t *tp) if (t == COMPLEX) { if (dcs->d_cmod == FLOAT) t = FCOMPLEX; - else if (dcs->d_cmod == DOUBLE) { + else if (dcs->d_cmod == DOUBLE) t = DCOMPLEX; - } else + else + /* Invalid type %s for _Complex */ error(308, tspec_name(dcs->d_cmod)); dcs->d_cmod = NOTSPEC; } @@ -528,6 +529,7 @@ setpackedsize(type_t *tp) } break; default: + /* %s attribute ignored for %s */ warning(326, "packed", tyname(buf, sizeof(buf), tp)); break; } @@ -1038,8 +1040,10 @@ check_type(sym_t *sym) } else if (incompl(tp)) { /* array of incomplete type */ if (sflag) { + /* array of incomplete type */ error(301); } else { + /* array of incomplete type */ warning(301); } #endif @@ -1110,10 +1114,7 @@ declarator_1_struct_union(sym_t *dsym) if (bitfieldtype_ok == 0) { if (sflag) { char buf[64]; - /* - * bit-field type '%s' invalid in - * ANSI C - */ + /* bit-field type '%s' invalid ... */ warning(273, tyname(buf, sizeof(buf), tp)); } else if (pflag) { @@ -1714,6 +1715,7 @@ newtag(sym_t *tag, scl_t scl, int decl, tag->s_name); /* declaration introduces new type in ANSI C: %s %s */ if (!sflag) { + /* decl. introduces new type in ANSI C: %s %s */ warning(44, storage_class_name(scl), tag->s_name); } @@ -2066,6 +2068,7 @@ check_redeclaration(sym_t *dsym, int *do */ /* redeclaration of %s; ANSI C requires "static" */ if (sflag) { + /* redeclaration of %s; ANSI C requires static */ warning(30, dsym->s_name); print_previous_declaration(-1, rsym); } @@ -2613,18 +2616,18 @@ decl1loc(sym_t *dsym, int initflg) switch (dsym->s_scl) { case AUTO: - /* automatic hides external declaration: %s */ if (hflag) + /* automatic hides external decl.: %s */ warning(86, dsym->s_name); break; case STATIC: - /* static hides external declaration: %s */ if (hflag) + /* static hides external decl.: %s */ warning(87, dsym->s_name); break; case TYPEDEF: - /* typedef hides external declaration: %s */ if (hflag) + /* typedef hides external decl.: %s */ warning(88, dsym->s_name); break; case EXTERN: @@ -2762,8 +2765,10 @@ check_init(sym_t *sym) } else if (sym->s_scl == EXTERN && sym->s_def == DECL) { /* cannot initialize "extern" declaration: %s */ if (dcs->d_ctx == EXTERN) { + /* cannot initialize extern declaration: %s */ warning(26, sym->s_name); } else { + /* cannot initialize extern declaration: %s */ error(26, sym->s_name); erred = 1; } @@ -2848,10 +2853,11 @@ check_size(sym_t *dsym) if (length(dsym->s_type, dsym->s_name) == 0 && dsym->s_type->t_tspec == ARRAY && dsym->s_type->t_dim == 0) { - /* empty array declaration: %s */ if (tflag) { + /* empty array declaration: %s */ warning(190, dsym->s_name); } else { + /* empty array declaration: %s */ error(190, dsym->s_name); } } @@ -3173,10 +3179,11 @@ check_global_variable_size(sym_t *sym) curr_pos = sym->s_def_pos; if (length(sym->s_type, sym->s_name) == 0 && sym->s_type->t_tspec == ARRAY && sym->s_type->t_dim == 0) { - /* empty array declaration: %s */ if (tflag || (sym->s_scl == EXTERN && !sflag)) { + /* empty array declaration: %s */ warning(190, sym->s_name); } else { + /* empty array declaration: %s */ error(190, sym->s_name); } } Index: src/usr.bin/xlint/lint1/func.c diff -u src/usr.bin/xlint/lint1/func.c:1.45 src/usr.bin/xlint/lint1/func.c:1.46 --- src/usr.bin/xlint/lint1/func.c:1.45 Fri Jan 1 11:14:06 2021 +++ src/usr.bin/xlint/lint1/func.c Fri Jan 1 11:41:01 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: func.c,v 1.45 2021/01/01 11:14:06 rillig Exp $ */ +/* $NetBSD: func.c,v 1.46 2021/01/01 11:41:01 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,7 +37,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: func.c,v 1.45 2021/01/01 11:14:06 rillig Exp $"); +__RCSID("$NetBSD: func.c,v 1.46 2021/01/01 11:41:01 rillig Exp $"); #endif #include <stdlib.h> @@ -787,7 +787,8 @@ do2(tnode_t *tn) cstk->c_infinite = tn->tn_val->v_ldbl != 0.0; } if (!cstk->c_infinite && cstk->c_cont) - error(323); + /* continue in 'do ... while (0)' loop */ + error(323); } expr(tn, 0, 1, 1); Index: src/usr.bin/xlint/lint1/init.c diff -u src/usr.bin/xlint/lint1/init.c:1.49 src/usr.bin/xlint/lint1/init.c:1.50 --- src/usr.bin/xlint/lint1/init.c:1.49 Fri Jan 1 00:00:24 2021 +++ src/usr.bin/xlint/lint1/init.c Fri Jan 1 11:41:01 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: init.c,v 1.49 2021/01/01 00:00:24 rillig Exp $ */ +/* $NetBSD: init.c,v 1.50 2021/01/01 11:41:01 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,7 +37,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: init.c,v 1.49 2021/01/01 00:00:24 rillig Exp $"); +__RCSID("$NetBSD: init.c,v 1.50 2021/01/01 11:41:01 rillig Exp $"); #endif #include <ctype.h> @@ -191,6 +191,7 @@ initstack_pop_item(void) return; } } + /* undefined struct/union member: %s */ error(101, namedmem->n_name); DPRINTF(("%s: end rhs.name=%s\n", __func__, namedmem->n_name)); pop_member(); @@ -472,7 +473,7 @@ init_lbrace(void) if ((initsym->s_scl == AUTO || initsym->s_scl == REG) && initstk->i_next == NULL) { if (tflag && !tspec_is_scalar(initstk->i_subt->t_tspec)) - /* no automatic aggregate initialization in trad. C*/ + /* no automatic aggregate initialization in trad. C */ warning(188); } Index: src/usr.bin/xlint/lint1/tree.c diff -u src/usr.bin/xlint/lint1/tree.c:1.112 src/usr.bin/xlint/lint1/tree.c:1.113 --- src/usr.bin/xlint/lint1/tree.c:1.112 Fri Jan 1 11:09:40 2021 +++ src/usr.bin/xlint/lint1/tree.c Fri Jan 1 11:41:01 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: tree.c,v 1.112 2021/01/01 11:09:40 rillig Exp $ */ +/* $NetBSD: tree.c,v 1.113 2021/01/01 11:41:01 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,7 +37,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: tree.c,v 1.112 2021/01/01 11:09:40 rillig Exp $"); +__RCSID("$NetBSD: tree.c,v 1.113 2021/01/01 11:41:01 rillig Exp $"); #endif #include <float.h> @@ -227,13 +227,16 @@ getnnode(sym_t *sym, int ntok) if (strcmp(sym->s_name, "__FUNCTION__") == 0 || strcmp(sym->s_name, "__PRETTY_FUNCTION__") == 0) { + /* __FUNCTION__/__PRETTY_FUNCTION... */ gnuism(316); fixtype = 1; } else if (strcmp(sym->s_name, "__func__") == 0) { if (!Sflag) + /* __func__ is a C9X feature */ warning(317); fixtype = 1; } else { + /* %s undefined */ error(99, sym->s_name); fixtype = 0; } @@ -412,10 +415,11 @@ struct_or_union_member(tnode_t *tn, op_t * to a struct/union, but the right operand is not member of it. */ if (str != NULL) { - /* illegal member use: %s */ if (eq && tflag) { + /* illegal member use: %s */ warning(102, msym->s_name); } else { + /* illegal member use: %s */ error(102, msym->s_name); } return msym; @@ -427,10 +431,11 @@ struct_or_union_member(tnode_t *tn, op_t */ if (eq) { if (op == POINT) { - /* left operand of "." must be struct/union object */ if (tflag) { + /* left operand of '.' must be struct/... */ warning(103); } else { + /* left operand of '.' must be struct/... */ error(103); } } else { @@ -438,9 +443,11 @@ struct_or_union_member(tnode_t *tn, op_t /* left operand of "->" must be pointer to ... */ if (tflag && tn->tn_type->t_tspec == PTR) { tyname(buf, sizeof(buf), tn->tn_type); + /* left operand of '->' must be pointer ... */ warning(104, buf); } else { tyname(buf, sizeof(buf), tn->tn_type); + /* left operand of '->' must be pointer ... */ error(104, buf); } } @@ -785,17 +792,17 @@ typeok(op_t op, int arg, tnode_t *ln, tn if (!ln->tn_lvalue) { if (ln->tn_op == CVT && ln->tn_cast && ln->tn_left->tn_op == LOAD) { - /* a cast to non-ptr does not yield an lvalue */ if (ln->tn_type->t_tspec == PTR) break; + /* a cast does not yield an lvalue */ error(163); } /* %soperand of '%s' must be lvalue */ error(114, "", mp->m_name); return 0; } else if (ltp->t_const) { - /* %soperand of '%s' must be modifiable lvalue */ if (!tflag) + /* %soperand of '%s' must be modifiable ... */ warning(115, "", mp->m_name); } break; @@ -805,9 +812,9 @@ typeok(op_t op, int arg, tnode_t *ln, tn } else if (!ln->tn_lvalue) { if (ln->tn_op == CVT && ln->tn_cast && ln->tn_left->tn_op == LOAD) { - /* a cast to non-ptr does not yield an lvalue */ if (ln->tn_type->t_tspec == PTR) break; + /* a cast does not yield an lvalue */ error(163); } /* %soperand of '%s' must be lvalue */ @@ -1080,9 +1087,9 @@ typeok(op_t op, int arg, tnode_t *ln, tn if (!ln->tn_lvalue) { if (ln->tn_op == CVT && ln->tn_cast && ln->tn_left->tn_op == LOAD) { - /* a cast to non-ptr does not yield an lvalue */ if (ln->tn_type->t_tspec == PTR) break; + /* a cast does not yield an lvalue */ error(163); } /* %soperand of '%s' must be lvalue */ @@ -1090,8 +1097,8 @@ typeok(op_t op, int arg, tnode_t *ln, tn return 0; } else if (ltp->t_const || ((lt == STRUCT || lt == UNION) && has_constant_member(ltp))) { - /* %soperand of %s must be modifiable lvalue */ if (!tflag) + /* %soperand of '%s' must be modifiable lvalue */ warning(115, "left ", mp->m_name); } break; @@ -1795,12 +1802,13 @@ check_integer_conversion(op_t op, int ar if (Pflag && psize(nt) > psize(ot) && tspec_is_uint(nt) != tspec_is_uint(ot)) { - /* conversion to %s may sign-extend incorrectly (, arg #%d) */ if (aflag && pflag) { if (op == FARG) { + /* conversion to '%s' may sign-extend ... */ warning(297, tyname(lbuf, sizeof(lbuf), tp), arg); } else { + /* conversion to '%s' may sign-extend ... */ warning(131, tyname(lbuf, sizeof(lbuf), tp)); } } @@ -1812,6 +1820,7 @@ check_integer_conversion(op_t op, int ar case MINUS: case MULT: case SHL: + /* suggest cast from '%s' to '%s' on op %s to ... */ warning(324, tyname(rbuf, sizeof(rbuf), gettyp(ot)), tyname(lbuf, sizeof(lbuf), tp), @@ -1828,11 +1837,13 @@ check_integer_conversion(op_t op, int ar /* conversion from '%s' may lose accuracy */ if (aflag) { if (op == FARG) { + /* conv. from '%s' to '%s' may lose ... */ warning(298, tyname(rbuf, sizeof(rbuf), tn->tn_type), tyname(lbuf, sizeof(lbuf), tp), arg); } else { + /* conv. from '%s' to '%s' may lose accuracy */ warning(132, tyname(rbuf, sizeof(rbuf), tn->tn_type), tyname(lbuf, sizeof(lbuf), tp)); @@ -2078,10 +2089,7 @@ cvtcon(op_t op, int arg, type_t *tp, val if (nsz > osz && (nv->v_quad & qbmasks[osz - 1]) != 0 && (nv->v_quad & xmask) != xmask) { - /* - * extra bits set to 0 in conversion - * of '%s' to '%s', op %s - */ + /* extra bits set to 0 in conv. of '%s' ... */ warning(309, tyname(lbuf, sizeof(lbuf), gettyp(ot)), tyname(rbuf, sizeof(rbuf), tp), @@ -2390,6 +2398,7 @@ build_real_imag(op_t op, tnode_t *ln) cn = new_int_const_node(FLOAT, (int64_t)1); break; default: + /* __%s__ is illegal for type %s */ error(276, op == REAL ? "real" : "imag", tyname(buf, sizeof(buf), ln->tn_type)); return NULL; @@ -2409,8 +2418,8 @@ build_ampersand(tnode_t *tn, int noign) tspec_t t; if (!noign && ((t = tn->tn_type->t_tspec) == ARRAY || t == FUNC)) { - /* & before array or function: ignored */ if (tflag) + /* '&' before array or function: ignored */ warning(127); return tn; } @@ -3024,6 +3033,7 @@ build_offsetof(type_t *tp, sym_t *sym) #endif tspec_t t = tp->t_tspec; if (t != STRUCT && t != UNION) + /* unacceptable operand of '%s' */ error(111, "offsetof"); // XXX: wrong size, no checking for sym fixme @@ -3166,6 +3176,7 @@ cast(tnode_t *tn, type_t *tp) sym_t *m; str_t *str = tp->t_str; if (!Sflag) { + /* union cast is a C9X feature */ error(328); return NULL; } @@ -3179,12 +3190,13 @@ cast(tnode_t *tn, type_t *tp) return tn; } } + /* type '%s' is not a member of '%s' */ error(329, tyname(buf, sizeof(buf), tn->tn_type), tyname(buf1, sizeof(buf1), tp)); return NULL; } else if (nt == STRUCT || nt == ARRAY || nt == FUNC) { - /* invalid cast expression */ if (!Sflag || nt == ARRAY || nt == FUNC) { + /* invalid cast expression */ error(147); return NULL; } @@ -3421,10 +3433,11 @@ constant(tnode_t *tn, int required) v->v_quad = 1; } - /* integral constant expression expected */ if (required) + /* integral constant expression expected */ error(55); else + /* variable array dimension is a C99/GCC extension */ c99ism(318); if (!tspec_is_int(v->v_tspec)) @@ -3676,8 +3689,8 @@ check_expr_misc(tnode_t *tn, int vctx, i outcall(tn, vctx || tctx, rvdisc); break; case EQ: - /* equality operator "==" found where "=" was exp. */ if (hflag && eqwarn) + /* operator '==' found where '=' was expected */ warning(160); break; case CON: