mirror of
https://github.com/golang/go
synced 2024-11-19 01:34:40 -07:00
cmd/compile: include pkgPath on all struct types
Fixes #15026. Change-Id: I61ed71152b99973270d79264d1e8f466f7343c02 Reviewed-on: https://go-review.googlesource.com/21286 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
e775b8df7a
commit
43a274fd67
@ -1277,7 +1277,7 @@ ok:
|
||||
}
|
||||
|
||||
ot = dcommontype(s, ot, t)
|
||||
var pkg *Pkg
|
||||
pkg := localpkg
|
||||
if t.Sym != nil {
|
||||
pkg = t.Sym.Pkg
|
||||
}
|
||||
|
@ -2321,6 +2321,33 @@ func TestImportPath(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFieldPkgPath(t *testing.T) {
|
||||
typ := TypeOf(struct {
|
||||
Exported string
|
||||
unexported string
|
||||
OtherPkgFields
|
||||
}{})
|
||||
for _, test := range []struct {
|
||||
index []int
|
||||
pkgPath string
|
||||
anonymous bool
|
||||
}{
|
||||
{[]int{0}, "", false}, // Exported
|
||||
{[]int{1}, "reflect_test", false}, // unexported
|
||||
{[]int{2}, "", true}, // OtherPkgFields
|
||||
{[]int{2, 0}, "", false}, // OtherExported
|
||||
{[]int{2, 1}, "reflect", false}, // otherUnexported
|
||||
} {
|
||||
f := typ.FieldByIndex(test.index)
|
||||
if got, want := f.PkgPath, test.pkgPath; got != want {
|
||||
t.Errorf("Field(%d).PkgPath = %q, want %q", test.index, got, want)
|
||||
}
|
||||
if got, want := f.Anonymous, test.anonymous; got != want {
|
||||
t.Errorf("Field(%d).Anonymous = %v, want %v", test.index, got, want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestVariadicType(t *testing.T) {
|
||||
// Test example from Type documentation.
|
||||
var f func(x int, y ...float64)
|
||||
|
@ -94,3 +94,8 @@ func FirstMethodNameBytes(t Type) *byte {
|
||||
}
|
||||
return m.name.bytes
|
||||
}
|
||||
|
||||
type OtherPkgFields struct {
|
||||
OtherExported int
|
||||
otherUnexported int
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user