Commit 69285a8b authored by David Crawshaw's avatar David Crawshaw

reflect: recognize unnamed directional channels

go test github.com/onsi/gomega/gbytes now passes at tip, and tests
added to the reflect package.

Fixes #14645

Change-Id: I16216c1a86211a1103d913237fe6bca5000cf885
Reviewed-on: https://go-review.googlesource.com/20221
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
parent 4c69e92f
......@@ -5019,6 +5019,8 @@ var nameTests = []nameTest{
{[]D1{}, ""},
{(chan D1)(nil), ""},
{(func() D1)(nil), ""},
{(<-chan D1)(nil), ""},
{(chan<- D1)(nil), ""},
}
func TestNames(t *testing.T) {
......
......@@ -194,11 +194,13 @@ var assignableTests = []struct {
{new(*int), new(IntPtr), true},
{new(IntPtr), new(*int), true},
{new(IntPtr), new(IntPtr1), false},
{new(Ch), new(<-chan interface{}), true},
// test runs implementsTests too
}
type IntPtr *int
type IntPtr1 *int
type Ch <-chan interface{}
func TestAssignableTo(t *testing.T) {
for _, tt := range append(assignableTests, implementsTests...) {
......
......@@ -563,10 +563,14 @@ func (t *rtype) Name() string {
if hasPrefix(t.string, "chan ") {
return ""
}
if hasPrefix(t.string, "chan<-") {
return ""
}
if hasPrefix(t.string, "func(") {
return ""
}
if t.string[0] == '[' || t.string[0] == '*' {
switch t.string[0] {
case '[', '*', '<':
return ""
}
i := len(t.string) - 1
......
......@@ -42,10 +42,14 @@ func (t *_type) name() string {
if hasPrefix(t._string, "chan ") {
return ""
}
if hasPrefix(t._string, "chan<-") {
return ""
}
if hasPrefix(t._string, "func(") {
return ""
}
if t._string[0] == '[' || t._string[0] == '*' {
switch t._string[0] {
case '[', '*', '<':
return ""
}
i := len(t._string) - 1
......
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