mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00: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
3 changed files with 33 additions and 1 deletions
|
|
@ -1277,7 +1277,7 @@ ok:
|
||||||
}
|
}
|
||||||
|
|
||||||
ot = dcommontype(s, ot, t)
|
ot = dcommontype(s, ot, t)
|
||||||
var pkg *Pkg
|
pkg := localpkg
|
||||||
if t.Sym != nil {
|
if t.Sym != nil {
|
||||||
pkg = t.Sym.Pkg
|
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) {
|
func TestVariadicType(t *testing.T) {
|
||||||
// Test example from Type documentation.
|
// Test example from Type documentation.
|
||||||
var f func(x int, y ...float64)
|
var f func(x int, y ...float64)
|
||||||
|
|
|
||||||
|
|
@ -94,3 +94,8 @@ func FirstMethodNameBytes(t Type) *byte {
|
||||||
}
|
}
|
||||||
return m.name.bytes
|
return m.name.bytes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type OtherPkgFields struct {
|
||||||
|
OtherExported int
|
||||||
|
otherUnexported int
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue