]> Cypherpunks repositories - gostls13.git/commitdiff
go/internal/gcimporter: backport changes from x/tools/go/gcimporter15
authorRobert Griesemer <gri@golang.org>
Thu, 3 Nov 2016 17:47:44 +0000 (10:47 -0700)
committerRobert Griesemer <gri@golang.org>
Thu, 3 Nov 2016 18:10:35 +0000 (18:10 +0000)
See https://go-review.googlesource.com/32581.

This makes x/tools/go/gcimporter15/bimport.go a close copy again
and the importer more robust.

Change-Id: If96ad6acd611878b7dfa6a13d005d847ece82ab6
Reviewed-on: https://go-review.googlesource.com/32647
TryBot-Result: Gobot Gobot <gobot@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
src/go/internal/gcimporter/bimport.go

index a8e4a7e718da3fd6f893e134c114f7df3ea5e8e0..574b71dcb6b70402175250aa079e02f141038b05 100644 (file)
@@ -278,11 +278,13 @@ func (p *importer) obj(tag int) {
                p.declare(types.NewFunc(pos, pkg, name, sig))
 
        case aliasTag:
-               aliasPos := p.pos()
-               aliasName := p.string()
-               pkg, name := p.qualifiedName()
-               obj := pkg.Scope().Lookup(name)
-               p.declare(types.NewAlias(aliasPos, p.pkgList[0], aliasName, obj))
+               pos := p.pos()
+               name := p.string()
+               var orig types.Object
+               if pkg, name := p.qualifiedName(); pkg != nil {
+                       orig = pkg.Scope().Lookup(name)
+               }
+               p.declare(types.NewAlias(pos, p.pkgList[0], name, orig))
 
        default:
                errorf("unexpected object tag %d", tag)
@@ -343,7 +345,9 @@ var (
 
 func (p *importer) qualifiedName() (pkg *types.Package, name string) {
        name = p.string()
-       pkg = p.pkg()
+       if name != "" {
+               pkg = p.pkg()
+       }
        return
 }