]> Cypherpunks repositories - gostls13.git/commitdiff
gc: fix package quoting logic
authorRuss Cox <rsc@golang.org>
Wed, 29 Jun 2011 03:58:35 +0000 (23:58 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 29 Jun 2011 03:58:35 +0000 (23:58 -0400)
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

index 5d70c4edac6f84da7e8a065f1ad98913a67ccb10..01a4e822fbe598b1596ab6082fe6ad8a575ff3c3 100644 (file)
@@ -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 ';'
        {