From: Russ Cox Date: Wed, 29 Jun 2011 03:58:35 +0000 (-0400) Subject: gc: fix package quoting logic X-Git-Tag: weekly.2011-07-07~83 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ff4518da17a7362094a58ecc54872b36ea7cc987;p=gostls13.git gc: fix package quoting logic The decision for when to say "hash/crc32".New instead of crc32.New in an error was double-counting imports from different packages or indirect imports, so it was quoting even when there was no ambiguity. R=ken2 CC=golang-dev https://golang.org/cl/4645070 --- diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y index 5d70c4edac..01a4e822fb 100644 --- a/src/cmd/gc/go.y +++ b/src/cmd/gc/go.y @@ -237,8 +237,11 @@ import_here: import_package: LPACKAGE sym import_safety ';' { - importpkg->name = $2->name; - pkglookup($2->name, nil)->npkg++; + if(importpkg->name == nil) { + importpkg->name = $2->name; + pkglookup($2->name, nil)->npkg++; + } else if(strcmp(importpkg->name, $2->name) != 0) + yyerror("conflicting names %s and %s for package %Z", importpkg->name, $2->name, importpkg->path); importpkg->direct = 1; if(safemode && !curio.importsafe) @@ -1658,8 +1661,11 @@ hidden_import: Pkg *p; p = mkpkg($3.u.sval); - p->name = $2->name; - pkglookup($2->name, nil)->npkg++; + if(p->name == nil) { + p->name = $2->name; + pkglookup($2->name, nil)->npkg++; + } else if(strcmp(p->name, $2->name) != 0) + yyerror("conflicting names %s and %s for package %Z", p->name, $2->name, p->path); } | LVAR hidden_pkg_importsym hidden_type ';' {