go/internal/gccgoimporter: revise previous anonymous field fix.

Revise the fix for #31540 to take into account the possibility that we
may see an alias to a name that has already been installed into
package scope. This scenario is not possible to reproduce with the
current importer unit tests; changes to the harness to enable this
scenario will be added in a later CL.

Updates #31540.

Change-Id: Ie155d5e0b998604177a78471cba2413f57d40229
Reviewed-on: https://go-review.googlesource.com/c/go/+/173440
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Than McIntosh 2019-04-23 12:38:36 -04:00
parent 13d0af4e70
commit d152ff286f

View file

@ -493,6 +493,7 @@ func (p *parser) parseNamedType(nlist []int) types.Type {
// type alias
if p.tok == '=' {
p.next()
p.aliases[nlist[len(nlist)-1]] = name
if obj != nil {
// use the previously imported (canonical) type
t := obj.Type()
@ -502,7 +503,6 @@ func (p *parser) parseNamedType(nlist []int) types.Type {
}
t := p.parseType(pkg, nlist...)
obj = types.NewTypeName(token.NoPos, pkg, name, t)
p.aliases[nlist[len(nlist)-1]] = name
scope.Insert(obj)
return t
}