mirror of
https://github.com/golang/go
synced 2024-11-11 22:50:22 -07:00
[dev.typeparams] go/types: adjust printing of embedded struct fields (fixes x/tools/cmd/guru tests)
Prior to 1.16, go/types printed an embedded struct field by simply printing its type, which may have included a package qualification. Just printing the type is not useful with generic types and we now must print the actual field name derived from the type - this leads to different output for non-generic imported embedded types. Fix by printing a package qualification in that case. Change-Id: I2cb2484da7732428d13fdfb5fe4ec1fa1ee813a2 Reviewed-on: https://go-review.googlesource.com/c/go/+/293961 Trust: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Findley <rfindley@google.com> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
parent
47e4b0739e
commit
8654db4555
@ -126,6 +126,13 @@ func writeType(buf *bytes.Buffer, typ Type, qf Qualifier, visited []Type) {
|
||||
if i > 0 {
|
||||
buf.WriteString("; ")
|
||||
}
|
||||
// For compatibility with versions < go1.16, qualify the field name
|
||||
// of embedded fields with the package name. Various tests (such as
|
||||
// in x/tools/cmd/guru) depend on this output; and x/tools packages
|
||||
// are run against earlier versions of Go.
|
||||
if n, _ := f.typ.(*Named); f.embedded && n != nil && n.obj != nil && n.obj.pkg != nil {
|
||||
writePackage(buf, n.obj.pkg, qf)
|
||||
}
|
||||
buf.WriteString(f.name)
|
||||
if f.embedded {
|
||||
// emphasize that the embedded field's name
|
||||
|
Loading…
Reference in New Issue
Block a user