1
0
mirror of https://github.com/golang/go synced 2024-11-18 23:14:43 -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:
David Crawshaw 2016-03-30 11:15:01 -04:00
parent e775b8df7a
commit 43a274fd67
3 changed files with 33 additions and 1 deletions

View File

@ -1277,7 +1277,7 @@ ok:
}
ot = dcommontype(s, ot, t)
var pkg *Pkg
pkg := localpkg
if t.Sym != nil {
pkg = t.Sym.Pkg
}

View File

@ -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)

View File

@ -94,3 +94,8 @@ func FirstMethodNameBytes(t Type) *byte {
}
return m.name.bytes
}
type OtherPkgFields struct {
OtherExported int
otherUnexported int
}