diff options
author | Russ Cox <rsc@golang.org> | 2012-09-22 05:54:58 +1000 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2012-09-22 05:54:58 +1000 |
commit | e26dc4a8d8c3aa3db09d90bd386a7b3cdae024f2 (patch) | |
tree | 454224f50c37aef8e0f2f34bb5b9c47f406c3009 | |
parent | e302bba792acbc8685ee411a9412cef2096310b1 (diff) | |
download | go-e26dc4a8d8c3aa3db09d90bd386a7b3cdae024f2.tar.gz go-e26dc4a8d8c3aa3db09d90bd386a7b3cdae024f2.zip |
[release-branch.go1] cmd/gc: fix PkgPath of byte, rune types
««« backport 272e1dd72156
cmd/gc: fix PkgPath of byte, rune types
Fixes #3853.
R=ken2
CC=golang-dev
https://golang.org/cl/6492071
»»»
-rw-r--r-- | src/cmd/gc/reflect.c | 6 | ||||
-rw-r--r-- | src/pkg/reflect/all_test.go | 23 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/cmd/gc/reflect.c b/src/cmd/gc/reflect.c index f77697a6b8..39f6598199 100644 --- a/src/cmd/gc/reflect.c +++ b/src/cmd/gc/reflect.c @@ -672,6 +672,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); diff --git a/src/pkg/reflect/all_test.go b/src/pkg/reflect/all_test.go index e331405635..a0b9a03eb5 100644 --- a/src/pkg/reflect/all_test.go +++ b/src/pkg/reflect/all_test.go @@ -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(), ""}, } |