]> Cypherpunks repositories - gostls13.git/commitdiff
reflect: clear tflag on new types
authorDavid Crawshaw <crawshaw@golang.org>
Tue, 16 Aug 2016 11:44:57 +0000 (07:44 -0400)
committerDavid Crawshaw <crawshaw@golang.org>
Tue, 16 Aug 2016 16:58:15 +0000 (16:58 +0000)
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>

src/reflect/all_test.go
src/reflect/type.go

index bbb098f3eb6134884a3218734ce89dad4124749d..780799cc6dc9d69477ad33ff629b2cce93733a23 100644 (file)
@@ -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 {
index de6e05fb6dc47e36b26029222f13e56d3b73342e..891671017af0f864f0f3fe15fdf33162ca8350f9 100644 (file)
@@ -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