]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: fix PkgPath of byte, rune types
authorRuss Cox <rsc@golang.org>
Sat, 1 Sep 2012 23:55:55 +0000 (19:55 -0400)
committerRuss Cox <rsc@golang.org>
Sat, 1 Sep 2012 23:55:55 +0000 (19:55 -0400)
Fixes #3853.

R=ken2
CC=golang-dev
https://golang.org/cl/6492071

src/cmd/gc/reflect.c
src/pkg/reflect/all_test.go

index f4c235a4800354e8ce633a3113409c208e381f75..7496b71bf2b98cb91c652e45e87024e177c5e21a 100644 (file)
@@ -680,6 +680,12 @@ dtypesym(Type *t)
        Sig *a, *m;
        Type *t1, *tbase, *t2;
 
+       // Replace byte, rune aliases with real type.
+       // They've been separate internally to make error messages
+       // better, but we have to merge them in the reflect tables.
+       if(t == bytetype || t == runetype)
+               t = types[t->etype];
+
        if(isideal(t))
                fatal("dtypesym %T", t);
 
index 3b6fd5e58517ab3b7175505275fd10126a017892..148db888a7b0025b36b0aee2b6ebac962a27661c 100644 (file)
@@ -1384,7 +1384,30 @@ func TestImportPath(t *testing.T) {
                path string
        }{
                {TypeOf(&base64.Encoding{}).Elem(), "encoding/base64"},
+               {TypeOf(int(0)), ""},
+               {TypeOf(int8(0)), ""},
+               {TypeOf(int16(0)), ""},
+               {TypeOf(int32(0)), ""},
+               {TypeOf(int64(0)), ""},
                {TypeOf(uint(0)), ""},
+               {TypeOf(uint8(0)), ""},
+               {TypeOf(uint16(0)), ""},
+               {TypeOf(uint32(0)), ""},
+               {TypeOf(uint64(0)), ""},
+               {TypeOf(uintptr(0)), ""},
+               {TypeOf(float32(0)), ""},
+               {TypeOf(float64(0)), ""},
+               {TypeOf(complex64(0)), ""},
+               {TypeOf(complex128(0)), ""},
+               {TypeOf(byte(0)), ""},
+               {TypeOf(rune(0)), ""},
+               {TypeOf([]byte(nil)), ""},
+               {TypeOf([]rune(nil)), ""},
+               {TypeOf(string("")), ""},
+               {TypeOf((*interface{})(nil)).Elem(), ""},
+               {TypeOf((*byte)(nil)), ""},
+               {TypeOf((*rune)(nil)), ""},
+               {TypeOf((*int64)(nil)), ""},
                {TypeOf(map[string]int{}), ""},
                {TypeOf((*error)(nil)).Elem(), ""},
        }