aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Crawshaw <crawshaw@golang.org>2016-08-16 07:44:57 -0400
committerChris Broadfoot <cbro@golang.org>2016-09-07 17:46:45 +0000
commit9b4e323e883353e870879fe87c2c16872f43a98d (patch)
tree09bae31edfd721d7ad6d10b3563d37d044f13a78
parenta5add8c7260b5b7d49488eaf60ab49804df095e6 (diff)
downloadgo-9b4e323e883353e870879fe87c2c16872f43a98d.tar.gz
go-9b4e323e883353e870879fe87c2c16872f43a98d.zip
[release-branch.go1.7] reflect: clear tflag on new types
Fixes #16722 Change-Id: I50a0e69d3e79d13bc1860cd983267c3db087a4b8 Reviewed-on: https://go-review.googlesource.com/27119 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-on: https://go-review.googlesource.com/28630
-rw-r--r--src/reflect/all_test.go2
-rw-r--r--src/reflect/type.go2
2 files changed, 4 insertions, 0 deletions
diff --git a/src/reflect/all_test.go b/src/reflect/all_test.go
index bbb098f3eb..780799cc6d 100644
--- a/src/reflect/all_test.go
+++ b/src/reflect/all_test.go
@@ -5720,6 +5720,8 @@ func TestTypeStrings(t *testing.T) {
{TypeOf(new(XM)), "*reflect_test.XM"},
{TypeOf(new(XM).String), "func() string"},
{TypeOf(new(XM)).Method(0).Type, "func(*reflect_test.XM) string"},
+ {ChanOf(3, TypeOf(XM{})), "chan reflect_test.XM"},
+ {MapOf(TypeOf(int(0)), TypeOf(XM{})), "map[int]reflect_test.XM"},
}
for i, test := range stringTests {
diff --git a/src/reflect/type.go b/src/reflect/type.go
index de6e05fb6d..891671017a 100644
--- a/src/reflect/type.go
+++ b/src/reflect/type.go
@@ -1848,6 +1848,7 @@ func ChanOf(dir ChanDir, t Type) Type {
prototype := *(**chanType)(unsafe.Pointer(&ichan))
ch := new(chanType)
*ch = *prototype
+ ch.tflag = 0
ch.dir = uintptr(dir)
ch.str = resolveReflectName(newName(s, "", "", false))
ch.hash = fnv1(typ.hash, 'c', byte(dir))
@@ -1892,6 +1893,7 @@ func MapOf(key, elem Type) Type {
mt := new(mapType)
*mt = **(**mapType)(unsafe.Pointer(&imap))
mt.str = resolveReflectName(newName(s, "", "", false))
+ mt.tflag = 0
mt.hash = fnv1(etyp.hash, 'm', byte(ktyp.hash>>24), byte(ktyp.hash>>16), byte(ktyp.hash>>8), byte(ktyp.hash))
mt.key = ktyp
mt.elem = etyp