mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: preserve Type.nod in copytype
By clearing out t.nod in copytype, we effectively lose the reference from a Type back to its declaring OTYPE Node. This means later in typenamesym when we add typenod(t) to signatlist, we end up creating a new OTYPE Node. Moreover, this Node's position information will depend on whatever context it happens be needed, and will be used for the Type's position in the export data. Updates #19391. Change-Id: Ied93126449f75d7c5e3275cbdcc6fa657a8aa21d Reviewed-on: https://go-review.googlesource.com/37870 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
parent
4b261a1410
commit
5d0c20efc7
2 changed files with 2 additions and 4 deletions
|
|
@ -404,12 +404,10 @@ func (p *importer) newtyp(etype EType) *Type {
|
|||
// importtype declares that pt, an imported named type, has underlying type t.
|
||||
func (p *importer) importtype(pt, t *Type) {
|
||||
if pt.Etype == TFORW {
|
||||
n := pt.nod
|
||||
copytype(pt.nod, t)
|
||||
pt.nod = n // unzero nod
|
||||
pt.Sym.Importdef = importpkg
|
||||
pt.Sym.Lastlineno = lineno
|
||||
declare(n, PEXTERN)
|
||||
declare(pt.nod, PEXTERN)
|
||||
checkwidth(pt)
|
||||
} else {
|
||||
// pt.Orig and t must be identical.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue