From ff4518da17a7362094a58ecc54872b36ea7cc987 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 28 Jun 2011 23:58:35 -0400 Subject: [PATCH] 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 --- src/cmd/gc/go.y | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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 ';' { -- 2.50.0