]> Cypherpunks repositories - gostls13.git/commitdiff
go/internal/gccgoimporter: revise previous anonymous field fix.
authorThan McIntosh <thanm@google.com>
Tue, 23 Apr 2019 16:38:36 +0000 (12:38 -0400)
committerThan McIntosh <thanm@google.com>
Wed, 24 Apr 2019 19:36:29 +0000 (19:36 +0000)
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>
src/go/internal/gccgoimporter/parser.go

index 5fd913c54ae7d413ee70e72db959c270bf9947b7..64a4042a451af463bf264225f253bc53019130fd 100644 (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
        }