Commit 43a274fd authored by David Crawshaw's avatar David Crawshaw

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: 's avatarIan Lance Taylor <iant@golang.org>
parent e775b8df
......@@ -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
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment