go/types, types2: type-checker internal type printing doesn't print embedded fields that are alias types correctly #44410
Comments
If we solve the type alias related issues (by introducing an explicit type alias node), this issue would probably be fixed as well. |
Change https://golang.org/cl/293962 mentions this issue: |
gopherbot
pushed a commit
that referenced
this issue
Feb 19, 2021
…s x/tools tests) An embedded struct field is embedded by mentioning its type. The fact that the field name may be different and derived from the type doesn't matter for the struct type. Do print the embedded type rather than the derived field name, as we have always done in the past. Remove the fancy new code which was just plain wrong. The struct output printing is only relevant for debugging and test cases. Reverting to the original code (pre-generics) fixes a couple of x/tools tests. Unfortunately, the original code is (also) not correct for embedded type aliases. Adjusted a gccgoimporter test accordingly and filed issue #44410. This is a follow-up on https://golang.org/cl/293961 which addressed the issue only partially and left the incorrect code in place. Change-Id: Icb7a89c12ef7929c221fb1a5792f144f7fcd5855 Reviewed-on: https://go-review.googlesource.com/c/go/+/293962 Trust: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Given
the struct
S
will be printed with an embedded field namedmap[string]int
because we have lost information about its alias name.This affects debugging and test cases, e.g.,
src/go/internal/gccgoimporter/importer_test.go:97
wants"type S struct{b int; A2"
but we only have"type S struct{b int; map[Y]Z}"
.The relevant printing code is in
go/types/typestring.go
, functionwriteType
.The text was updated successfully, but these errors were encountered: