diff options
| author | David Crawshaw <crawshaw@golang.org> | 2016-05-13 12:33:27 -0400 |
|---|---|---|
| committer | David Crawshaw <crawshaw@golang.org> | 2016-05-13 17:44:48 +0000 |
| commit | 0cc710dca63b79ed2dd6ce9375502e76e5fc0484 (patch) | |
| tree | 00419a5d5b4b5ac653581b83078aff4ba88ced80 | |
| parent | 2cc0f2209653f9f6931e0c3a1fb63e581a0fe87f (diff) | |
| download | go-0cc710dca63b79ed2dd6ce9375502e76e5fc0484.tar.xz | |
reflect: fix method type string
By picking up a spurious tFlagExtraStar, the method type was printing
as unc instead of func.
Updates #15673
Change-Id: I0c2c189b99bdd4caeb393693be7520b8e3f342bf
Reviewed-on: https://go-review.googlesource.com/23103
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
| -rw-r--r-- | src/reflect/all_test.go | 21 | ||||
| -rw-r--r-- | src/reflect/type.go | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/reflect/all_test.go b/src/reflect/all_test.go index 5beec63273..9799fee357 100644 --- a/src/reflect/all_test.go +++ b/src/reflect/all_test.go @@ -5782,3 +5782,24 @@ func TestMethodPkgPathReadable(t *testing.T) { t.Errorf(`PkgPath=%q, want "reflect"`, m.PkgPath) } } + +func TestTypeStrings(t *testing.T) { + type stringTest struct { + typ Type + want string + } + stringTests := []stringTest{ + {TypeOf(func(int) {}), "func(int)"}, + {FuncOf([]Type{TypeOf(int(0))}, nil, false), "func(int)"}, + {TypeOf(XM{}), "reflect_test.XM"}, + {TypeOf(new(XM)), "*reflect_test.XM"}, + {TypeOf(new(XM).String), "func() string"}, + {TypeOf(new(XM)).Method(0).Type, "func(*reflect_test.XM) string"}, + } + + for i, test := range stringTests { + if got, want := test.typ.String(), test.want; got != want { + t.Errorf("type %d String()=%q, want %q", i, got, want) + } + } +} diff --git a/src/reflect/type.go b/src/reflect/type.go index 5c6e3d5500..3bfff4a7cc 100644 --- a/src/reflect/type.go +++ b/src/reflect/type.go @@ -1985,6 +1985,7 @@ func FuncOf(in, out []Type, variadic bool) Type { if len(args) > 50 { panic("reflect.FuncOf does not support more than 50 arguments") } + ft.tflag = 0 ft.hash = hash ft.inCount = uint16(len(in)) ft.outCount = uint16(len(out)) |
