mirror of
https://github.com/golang/go
synced 2024-10-04 12:21:26 -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:
parent
8d530f2472
commit
85195e2ccf
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user