diff options
| author | Robert Griesemer <gri@golang.org> | 2016-11-03 10:47:44 -0700 |
|---|---|---|
| committer | Robert Griesemer <gri@golang.org> | 2016-11-03 18:10:35 +0000 |
| commit | 18f0e88103aaa429e92564312b4ee966dcb77102 (patch) | |
| tree | 061b3a7be6a6bd53a9d69d96020037487af1ef28 /src | |
| parent | 322436b78c2b0a8dd346f460df6fc00f49adba8e (diff) | |
| download | go-18f0e88103aaa429e92564312b4ee966dcb77102.tar.xz | |
go/internal/gcimporter: backport changes from x/tools/go/gcimporter15
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>
Diffstat (limited to 'src')
| -rw-r--r-- | src/go/internal/gcimporter/bimport.go | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/go/internal/gcimporter/bimport.go b/src/go/internal/gcimporter/bimport.go index a8e4a7e718..574b71dcb6 100644 --- a/src/go/internal/gcimporter/bimport.go +++ b/src/go/internal/gcimporter/bimport.go @@ -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 } |
