1
0
mirror of https://github.com/golang/go synced 2024-10-04 10:21:21 -06:00

cmd/gc: more detail in import conflict error message

Cannot happen when using the go command, but help
people running commands by hand or with other tools.

Fixes #5888.

R=ken2
CC=golang-dev
https://golang.org/cl/13324048
This commit is contained in:
Russ Cox 2013-09-09 12:30:53 -04:00
parent 8d530f2472
commit 85195e2ccf
2 changed files with 5 additions and 2 deletions

View File

@ -481,9 +481,10 @@ importvar(Sym *s, Type *t)
if(s->def != N && s->def->op == ONAME) {
if(eqtype(t, s->def->type))
return;
yyerror("inconsistent definition for var %S during import\n\t%T\n\t%T", s, s->def->type, t);
yyerror("inconsistent definition for var %S during import\n\t%T (in \"%Z\")\n\t%T (in \"%Z\")", s, s->def->type, s->importdef->path, t, importpkg->path);
}
n = newname(s);
s->importdef = importpkg;
n->type = t;
declare(n, PEXTERN);
@ -509,11 +510,12 @@ importtype(Type *pt, Type *t)
n = pt->nod;
copytype(pt->nod, t);
pt->nod = n; // unzero nod
pt->sym->importdef = importpkg;
pt->sym->lastlineno = parserline();
declare(n, PEXTERN);
checkwidth(pt);
} else if(!eqtype(pt->orig, t))
yyerror("inconsistent definition for type %S during import\n\t%lT\n\t%lT", pt->sym, pt, t);
yyerror("inconsistent definition for type %S during import\n\t%lT (in \"%Z\")\n\t%lT (in \"%Z\")", pt->sym, pt, pt->sym->importdef->path, t, importpkg->path);
if(debug['E'])
print("import type %T %lT\n", pt, t);

View File

@ -380,6 +380,7 @@ struct Sym
Sym* link;
int32 npkg; // number of imported packages with this name
uint32 uniqgen;
Pkg* importdef; // where imported definition was found
// saved and restored by dcopy
Pkg* pkg;