From 9b4e323e883353e870879fe87c2c16872f43a98d Mon Sep 17 00:00:00 2001 From: David Crawshaw Date: Tue, 16 Aug 2016 07:44:57 -0400 Subject: [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 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot Reviewed-on: https://go-review.googlesource.com/28630 --- src/reflect/all_test.go | 2 ++ src/reflect/type.go | 2 ++ 2 files changed, 4 insertions(+) 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 -- cgit v1.2.3-54-g00ecf