1
0
mirror of https://github.com/golang/go synced 2024-11-25 00:07:56 -07:00

declared and not used; this time for sure

R=ken
OCL=34657
CL=34657
This commit is contained in:
Russ Cox 2009-09-15 14:11:43 -07:00
parent 67ab1b9fae
commit 1c9e4b358f
4 changed files with 17 additions and 6 deletions

View File

@ -48,12 +48,8 @@ allocparams(void)
}
if(n->op != ONAME || n->class != PAUTO)
continue;
lineno = n->lineno;
typecheck(&n, Erv | Easgn); // only needed for unused variables
if(n->type == T)
continue;
// if(!n->used && n->sym->name[0] != '&')
// yyerror("%S declared and not used", n->sym);
dowidth(n->type);
w = n->type->width;
if(w >= 100000000)
@ -447,6 +443,7 @@ cgen_discard(Node *nr)
switch(nr->op) {
case ONAME:
gused(nr);
break;
// unary

View File

@ -82,7 +82,7 @@ out:
n->typecheck = 1;
for(ll=n->list; ll; ll=ll->next)
if(ll->n->typecheck == 0)
typecheck(&ll->n, Erv);
typecheck(&ll->n, Erv | Easgn);
}
void

View File

@ -1975,7 +1975,7 @@ out:
n->typecheck = 1;
for(ll=n->list; ll; ll=ll->next)
if(ll->n->typecheck == 0)
typecheck(&ll->n, Erv);
typecheck(&ll->n, Erv | Easgn);
}
/*

View File

@ -67,6 +67,9 @@ void
walk(Node *fn)
{
char s[50];
NodeList *l;
Node *n;
int lno;
curfn = fn;
if(debug['W']) {
@ -77,6 +80,17 @@ walk(Node *fn)
if(walkret(curfn->nbody))
yyerror("function ends without a return statement");
typechecklist(curfn->nbody, Etop);
lno = lineno;
for(l=fn->dcl; l; l=l->next) {
n = l->n;
if(n->op != ONAME || n->class != PAUTO)
continue;
lineno = n->lineno;
typecheck(&n, Erv | Easgn); // only needed for unused variables
if(!n->used && n->sym->name[0] != '&')
yyerror("%S declared and not used", n->sym);
}
lineno = lno;
if(nerrors != 0)
return;
walkstmtlist(curfn->nbody);