Commit 1f4e68d9 authored by Ian Lance Taylor's avatar Ian Lance Taylor

reflect: an unnamed type has no PkgPath

The reflect package was returning a non-empty PkgPath for an unnamed
type with methods, such as a type whose methods have a pointer
receiver.

Fixes #16328.

Change-Id: I733e93981ebb5c5c108ef9b03bf5494930b93cf3
Reviewed-on: https://go-review.googlesource.com/24862Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
parent a84b18ac
...@@ -2261,6 +2261,8 @@ func TestImportPath(t *testing.T) { ...@@ -2261,6 +2261,8 @@ func TestImportPath(t *testing.T) {
{TypeOf((*int64)(nil)), ""}, {TypeOf((*int64)(nil)), ""},
{TypeOf(map[string]int{}), ""}, {TypeOf(map[string]int{}), ""},
{TypeOf((*error)(nil)).Elem(), ""}, {TypeOf((*error)(nil)).Elem(), ""},
{TypeOf((*Point)(nil)), ""},
{TypeOf((*Point)(nil)).Elem(), "reflect_test"},
} }
for _, test := range tests { for _, test := range tests {
if path := test.t.PkgPath(); path != test.path { if path := test.t.PkgPath(); path != test.path {
......
...@@ -876,6 +876,9 @@ func (t *rtype) MethodByName(name string) (m Method, ok bool) { ...@@ -876,6 +876,9 @@ func (t *rtype) MethodByName(name string) (m Method, ok bool) {
} }
func (t *rtype) PkgPath() string { func (t *rtype) PkgPath() string {
if t.tflag&tflagNamed == 0 {
return ""
}
ut := t.uncommon() ut := t.uncommon()
if ut == nil { if ut == nil {
return "" return ""
......
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