{[]D1{}, ""},
{(chan D1)(nil), ""},
{(func() D1)(nil), ""},
+ {(<-chan D1)(nil), ""},
+ {(chan<- D1)(nil), ""},
}
func TestNames(t *testing.T) {
{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...) {
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
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