restrained error messages for lint + misc.
This commit is contained in:
parent
287f8d5d70
commit
787904f82c
7 changed files with 49 additions and 32 deletions
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
!File: errout.h
|
!File: errout.h
|
||||||
#define ERROUT STDERR /* file pointer for writing messages */
|
#define ERROUT STDERR /* file pointer for writing messages */
|
||||||
#define ERR_SHADOW 5 /* a syntax error overshadows error messages
|
#define ERR_SHADOW 0 /* a syntax error overshadows error messages
|
||||||
until ERR_SHADOW symbols have been
|
until ERR_SHADOW symbols have been
|
||||||
accepted without syntax error */
|
accepted without syntax error */
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
# Machine and environ dependent definitions
|
# Machine and environ dependent definitions
|
||||||
EMHOME = ../../..
|
EMHOME = ../../..
|
||||||
|
EMHOME = /usr/proj/em/Work#???
|
||||||
MKDEP = $(EMHOME)/bin/mkdep
|
MKDEP = $(EMHOME)/bin/mkdep
|
||||||
PRID = $(EMHOME)/bin/prid
|
PRID = $(EMHOME)/bin/prid
|
||||||
CID = $(EMHOME)/bin/cid
|
CID = $(EMHOME)/bin/cid
|
||||||
|
@ -141,6 +142,13 @@ LINTFLAGS =
|
||||||
.str.h:
|
.str.h:
|
||||||
./make.allocd <$*.str >$*.h
|
./make.allocd <$*.str >$*.h
|
||||||
|
|
||||||
|
LINTTEST: #???
|
||||||
|
make Lnt
|
||||||
|
# ../lpass2/lint -Dunix -DMINIX /usr/star/ast/minix/tape3/commands/make/*.c
|
||||||
|
./lnt -h -Dlint --x s.c #x46.c #ceriel.c #m.c #lithm.c # fig4.c
|
||||||
|
# (cd ../lpass2; make lint.test)
|
||||||
|
# ./lnt -Dmc68000 -I/usr/em/h -I/usr/em/modules/h -I/usr/em/modules/pkg u.c
|
||||||
|
|
||||||
Main: Cfiles
|
Main: Cfiles
|
||||||
sh -c 'if $(CC) nmclash.c > /dev/null 2>&1 ; then make "EMHOME="$(EMHOME) $(CURRDIR)main ; else EMHOME=$(EMHOME); export EMHOME; ./Resolve main ; fi'
|
sh -c 'if $(CC) nmclash.c > /dev/null 2>&1 ; then make "EMHOME="$(EMHOME) $(CURRDIR)main ; else EMHOME=$(EMHOME); export EMHOME; ./Resolve main ; fi'
|
||||||
@rm -f nmclash.o a.out
|
@rm -f nmclash.o a.out
|
||||||
|
@ -161,7 +169,6 @@ CEmain: Cfiles
|
||||||
|
|
||||||
Lnt: Cfiles
|
Lnt: Cfiles
|
||||||
sh -c 'if $(CC) nmclash.c > /dev/null 2>&1 ; then make "EMHOME="$(EMHOME) $(CURRDIR)lnt ; else EMHOME=$(EMHOME); export EMHOME; ./Resolve lnt ; fi'
|
sh -c 'if $(CC) nmclash.c > /dev/null 2>&1 ; then make "EMHOME="$(EMHOME) $(CURRDIR)lnt ; else EMHOME=$(EMHOME); export EMHOME; ./Resolve lnt ; fi'
|
||||||
make "EMHOME="$(EMHOME) $(CURRDIR)lnt
|
|
||||||
@rm -f nmclash.o a.out
|
@rm -f nmclash.o a.out
|
||||||
|
|
||||||
install: Main
|
install: Main
|
||||||
|
|
|
@ -38,7 +38,11 @@ declaration
|
||||||
:
|
:
|
||||||
{Ds = null_decspecs;}
|
{Ds = null_decspecs;}
|
||||||
decl_specifiers(&Ds)
|
decl_specifiers(&Ds)
|
||||||
init_declarator_list(&Ds)?
|
[%default /* missing identifier derailed parser */
|
||||||
|
init_declarator_list(&Ds)
|
||||||
|
|
|
||||||
|
empty
|
||||||
|
]
|
||||||
';'
|
';'
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*The following functions are hacked to null-functions (i.e. they
|
*The following functions are hacked to null-functions (i.e. they
|
||||||
* do nothing). This needs another solution in the future.
|
* do nothing). This needs another solution in the future. !!???!!
|
||||||
*/
|
*/
|
||||||
#include "lint.h"
|
#include "lint.h"
|
||||||
|
|
||||||
|
@ -29,9 +29,7 @@ CC_crdlb(ps_xxx,v,s) label v; arith s; {}
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
CC_crdnam(ps_xxx,v,s) char *v; arith s; {}
|
CC_crdnam(ps_xxx,v,s) char *v; arith s; {}
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
CC_crfcon(ps_xxx,v,s) char *v; arith s; {}
|
CC_crxcon(op,ps_xxx,v,s) char *v; arith s; {}
|
||||||
/* ARGSUSED */
|
|
||||||
CC_cricon(ps_xxx,v,s) char *v; arith s; {}
|
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
CC_crilb(ps_xxx,v) label v; {}
|
CC_crilb(ps_xxx,v) label v; {}
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
|
@ -39,8 +37,6 @@ CC_crpnam(ps_xxx,v) char *v; {}
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
CC_crscon(ps_xxx,v,s) char *v; arith s; {}
|
CC_crscon(ps_xxx,v,s) char *v; arith s; {}
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
CC_crucon(ps_xxx,v,s) char *v; arith s; {}
|
|
||||||
/* ARGSUSED */
|
|
||||||
CC_cst(l) {}
|
CC_cst(l) {}
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
CC_dfdlb(l) label l; {}
|
CC_dfdlb(l) label l; {}
|
||||||
|
|
|
@ -516,7 +516,10 @@ fill_arg(e)
|
||||||
arg->ar_class = ArgConst;
|
arg->ar_class = ArgConst;
|
||||||
arg->CAA_VALUE = e->VL_VALUE;
|
arg->CAA_VALUE = e->VL_VALUE;
|
||||||
}
|
}
|
||||||
else if (e->ex_class == Value && e->VL_CLASS == Label) {
|
else if ( e->ex_type == string_type
|
||||||
|
&& e->ex_class == Value
|
||||||
|
&& e->VL_CLASS == Label
|
||||||
|
) {
|
||||||
/* it may be a string; let's look it up */
|
/* it may be a string; let's look it up */
|
||||||
register struct string_cst *sc = str_list;
|
register struct string_cst *sc = str_list;
|
||||||
|
|
||||||
|
|
|
@ -149,6 +149,7 @@ lint_1_local(idf, def)
|
||||||
|
|
||||||
if ( (sc == STATIC || sc == LABEL)
|
if ( (sc == STATIC || sc == LABEL)
|
||||||
&& !def->df_used
|
&& !def->df_used
|
||||||
|
&& !is_anon_idf(idf)
|
||||||
) {
|
) {
|
||||||
def_warning(def, "%s %s not used anywhere in function %s",
|
def_warning(def, "%s %s not used anywhere in function %s",
|
||||||
symbol2str(sc), idf->id_text, func_name);
|
symbol2str(sc), idf->id_text, func_name);
|
||||||
|
@ -159,6 +160,7 @@ lint_1_local(idf, def)
|
||||||
&& !def->df_initialized
|
&& !def->df_initialized
|
||||||
&& def->df_firstbrace != 0
|
&& def->df_firstbrace != 0
|
||||||
&& def->df_minlevel != level
|
&& def->df_minlevel != level
|
||||||
|
&& !is_anon_idf(idf)
|
||||||
) {
|
) {
|
||||||
register int diff = def->df_minlevel - level;
|
register int diff = def->df_minlevel - level;
|
||||||
|
|
||||||
|
@ -212,18 +214,22 @@ lint_1_global(idf, def)
|
||||||
|
|
||||||
if (sc == STATIC && !def->df_used) {
|
if (sc == STATIC && !def->df_used) {
|
||||||
if (def->df_set) {
|
if (def->df_set) {
|
||||||
def_warning(def,
|
if (!is_anon_idf(idf) && fund != ERRONEOUS) {
|
||||||
"%s %s %s set but not used",
|
def_warning(def,
|
||||||
symbol2str(sc),
|
"%s %s %s set but not used",
|
||||||
symbol2str(fund),
|
symbol2str(sc),
|
||||||
idf->id_text);
|
symbol2str(fund),
|
||||||
|
idf->id_text);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
def_warning(def,
|
if (!is_anon_idf(idf) && fund != ERRONEOUS) {
|
||||||
"%s %s %s not used anywhere",
|
def_warning(def,
|
||||||
symbol2str(sc),
|
"%s %s %s not used anywhere",
|
||||||
symbol2str(fund),
|
symbol2str(sc),
|
||||||
idf->id_text);
|
symbol2str(fund),
|
||||||
|
idf->id_text);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (loptions['x']) {
|
if (loptions['x']) {
|
||||||
|
@ -235,6 +241,8 @@ lint_1_global(idf, def)
|
||||||
&& !def->df_initialized
|
&& !def->df_initialized
|
||||||
&& !def->df_used
|
&& !def->df_used
|
||||||
&& strcmp(&fn[strlen(fn)-2], ".c") == 0
|
&& strcmp(&fn[strlen(fn)-2], ".c") == 0
|
||||||
|
&& !is_anon_idf(idf)
|
||||||
|
&& fund != ERRONEOUS
|
||||||
) {
|
) {
|
||||||
def_warning(def,
|
def_warning(def,
|
||||||
"%s %s %s not used anywhere",
|
"%s %s %s not used anywhere",
|
||||||
|
@ -300,9 +308,11 @@ change_state(idf, to_state)
|
||||||
break;
|
break;
|
||||||
case USED:
|
case USED:
|
||||||
if (!a->ad_set) {
|
if (!a->ad_set) {
|
||||||
warning("%s%s uninitialized", idf->id_text,
|
if (!is_anon_idf(idf)) {
|
||||||
(a->ad_maybe_set ? " possibly" : "")
|
warning("%s%s uninitialized", idf->id_text,
|
||||||
);
|
(a->ad_maybe_set ? " possibly" : "")
|
||||||
|
);
|
||||||
|
}
|
||||||
a->ad_maybe_set = 0;
|
a->ad_maybe_set = 0;
|
||||||
a->ad_set = 1; /* one warning */
|
a->ad_set = 1; /* one warning */
|
||||||
}
|
}
|
||||||
|
@ -351,7 +361,7 @@ check_autos()
|
||||||
|
|
||||||
ASSERT(!(a && a->ad_def->df_level > level));
|
ASSERT(!(a && a->ad_def->df_level > level));
|
||||||
while (a && a->ad_def->df_level == level) {
|
while (a && a->ad_def->df_level == level) {
|
||||||
if (!a->ad_used) {
|
if (!a->ad_used && !is_anon_idf(a->ad_idf)) {
|
||||||
if (a->ad_set || a->ad_maybe_set) {
|
if (a->ad_set || a->ad_maybe_set) {
|
||||||
def_warning(a->ad_def,
|
def_warning(a->ad_def,
|
||||||
"%s set but not used in function %s",
|
"%s set but not used in function %s",
|
||||||
|
@ -384,6 +394,7 @@ lint_end_formals()
|
||||||
|
|
||||||
if ( (def && !def->df_used)
|
if ( (def && !def->df_used)
|
||||||
&& !(f_ARGSUSED || LINTLIB)
|
&& !(f_ARGSUSED || LINTLIB)
|
||||||
|
&& !is_anon_idf(se->se_idf)
|
||||||
) {
|
) {
|
||||||
def_warning(def, "argument %s not used in function %s",
|
def_warning(def, "argument %s not used in function %s",
|
||||||
se->se_idf->id_text, func_name);
|
se->se_idf->id_text, func_name);
|
||||||
|
@ -839,8 +850,7 @@ lint_continue_stmt()
|
||||||
|
|
||||||
/******** A C T I O N S : S W I T C H ********/
|
/******** A C T I O N S : S W I T C H ********/
|
||||||
|
|
||||||
start_switch_part(expr)
|
start_switch_part(const)
|
||||||
struct expr *expr;
|
|
||||||
{
|
{
|
||||||
/* ls_current of a SWITCH entry has different meaning from ls_current of
|
/* ls_current of a SWITCH entry has different meaning from ls_current of
|
||||||
* other entries. It keeps track of which variables are used in all
|
* other entries. It keeps track of which variables are used in all
|
||||||
|
@ -850,7 +860,7 @@ start_switch_part(expr)
|
||||||
register struct lint_stack_entry *new = mk_lint_stack_entry(SWITCH);
|
register struct lint_stack_entry *new = mk_lint_stack_entry(SWITCH);
|
||||||
|
|
||||||
dbg_lint_stack("start_switch_part");
|
dbg_lint_stack("start_switch_part");
|
||||||
if (is_cp_cst(expr))
|
if (const)
|
||||||
hwarning("value in switch statement is constant");
|
hwarning("value in switch statement is constant");
|
||||||
|
|
||||||
new->LS_CASE = copy_state(top_ls->ls_current, level);
|
new->LS_CASE = copy_state(top_ls->ls_current, level);
|
||||||
|
@ -859,7 +869,6 @@ start_switch_part(expr)
|
||||||
top_ls->ls_current->st_notreached = 1;
|
top_ls->ls_current->st_notreached = 1;
|
||||||
top_ls->ls_current->st_warned = 0;
|
top_ls->ls_current->st_warned = 0;
|
||||||
lint_push(new);
|
lint_push(new);
|
||||||
lint_expr(expr, USED); /*???*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
end_switch_stmt()
|
end_switch_stmt()
|
||||||
|
@ -1085,6 +1094,7 @@ lint_return_stmt(e)
|
||||||
if ( e == NOVALRETURNED
|
if ( e == NOVALRETURNED
|
||||||
&& !func_notypegiven
|
&& !func_notypegiven
|
||||||
&& fund != VOID
|
&& fund != VOID
|
||||||
|
&& fund != ERRONEOUS
|
||||||
) {
|
) {
|
||||||
warning("function %s declared %s%s but no value returned",
|
warning("function %s declared %s%s but no value returned",
|
||||||
func_name,
|
func_name,
|
||||||
|
|
|
@ -138,9 +138,6 @@ if_statement
|
||||||
'('
|
'('
|
||||||
expression(&expr)
|
expression(&expr)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
|
||||||
print_expr("expr in IF", expr);
|
|
||||||
#endif DEBUG
|
|
||||||
opnd2test(&expr, IF);
|
opnd2test(&expr, IF);
|
||||||
if (is_cp_cst(expr)) {
|
if (is_cp_cst(expr)) {
|
||||||
/* The comparison has been optimized
|
/* The comparison has been optimized
|
||||||
|
@ -361,7 +358,7 @@ switch_statement
|
||||||
{
|
{
|
||||||
code_startswitch(&expr);
|
code_startswitch(&expr);
|
||||||
#ifdef LINT
|
#ifdef LINT
|
||||||
start_switch_part(expr);
|
start_switch_part(is_cp_cst(expr));
|
||||||
#endif LINT
|
#endif LINT
|
||||||
}
|
}
|
||||||
')'
|
')'
|
||||||
|
|
Loading…
Reference in a new issue