1
0
mirror of https://github.com/golang/go synced 2024-11-20 07:44:41 -07:00

gc: remove duplicate errors, give better error for I.(T)

R=ken2
CC=golang-dev
https://golang.org/cl/370041
This commit is contained in:
Russ Cox 2010-03-09 15:09:37 -08:00
parent e00795859b
commit 529369e452

View File

@ -79,7 +79,7 @@ errcmp(const void *va, const void *vb)
return a->lineno - b->lineno; return a->lineno - b->lineno;
if(a->seq != b->seq) if(a->seq != b->seq)
return a->seq - b->seq; return a->seq - b->seq;
return 0; return strcmp(a->msg, b->msg);
} }
void void
@ -91,7 +91,8 @@ flusherrors(void)
return; return;
qsort(err, nerr, sizeof err[0], errcmp); qsort(err, nerr, sizeof err[0], errcmp);
for(i=0; i<nerr; i++) for(i=0; i<nerr; i++)
print("%s", err[i].msg); if(i==0 || strcmp(err[i].msg, err[i-1].msg) != 0)
print("%s", err[i].msg);
nerr = 0; nerr = 0;
} }
@ -3082,11 +3083,19 @@ runifacechecks(void)
needexplicit = 1; needexplicit = 1;
} }
if(wrong) { if(wrong) {
if(samename) if(p->explicit) {
yyerror("%T is not %T\n\tmissing %S%hhT\n\tdo have %S%hhT", if(samename)
t, iface, m->sym, m->type, samename->sym, samename->type); yyerror("%T cannot contain %T\n\tmissing %S%hhT\n\tdo have %S%hhT",
else iface, t, m->sym, m->type, samename->sym, samename->type);
yyerror("%T is not %T\n\tmissing %S%hhT", t, iface, m->sym, m->type); else
yyerror("%T cannot contain %T\n\tmissing %S%hhT", iface, t, m->sym, m->type);
} else {
if(samename)
yyerror("%T is not %T\n\tmissing %S%hhT\n\tdo have %S%hhT",
t, iface, m->sym, m->type, samename->sym, samename->type);
else
yyerror("%T is not %T\n\tmissing %S%hhT", t, iface, m->sym, m->type);
}
} }
else if(!p->explicit && needexplicit) { else if(!p->explicit && needexplicit) {
if(m) { if(m) {