Commit 0cc710dc authored by David Crawshaw's avatar David Crawshaw

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/23103Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 2cc0f220
...@@ -5782,3 +5782,24 @@ func TestMethodPkgPathReadable(t *testing.T) { ...@@ -5782,3 +5782,24 @@ func TestMethodPkgPathReadable(t *testing.T) {
t.Errorf(`PkgPath=%q, want "reflect"`, m.PkgPath) 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)
}
}
}
...@@ -1985,6 +1985,7 @@ func FuncOf(in, out []Type, variadic bool) Type { ...@@ -1985,6 +1985,7 @@ func FuncOf(in, out []Type, variadic bool) Type {
if len(args) > 50 { if len(args) > 50 {
panic("reflect.FuncOf does not support more than 50 arguments") panic("reflect.FuncOf does not support more than 50 arguments")
} }
ft.tflag = 0
ft.hash = hash ft.hash = hash
ft.inCount = uint16(len(in)) ft.inCount = uint16(len(in))
ft.outCount = uint16(len(out)) ft.outCount = uint16(len(out))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment