| // Copyright 2013 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package a | |
| type I interface { | |
| F() | |
| } | |
| type foo1 []byte | |
| type foo2 []rune | |
| type foo3 []uint8 | |
| type foo4 []int32 | |
| type foo5 string | |
| type foo6 string | |
| type foo7 string | |
| type foo8 string | |
| type foo9 string | |
| func (f foo1) F() { return } | |
| func (f foo2) F() { return } | |
| func (f foo3) F() { return } | |
| func (f foo4) F() { return } | |
| func (f foo5) F() { return } | |
| func (f foo6) F() { return } | |
| func (f foo7) F() { return } | |
| func (f foo8) F() { return } | |
| func (f foo9) F() { return } | |
| func Test1(s string) I { return foo1(s) } | |
| func Test2(s string) I { return foo2(s) } | |
| func Test3(s string) I { return foo3(s) } | |
| func Test4(s string) I { return foo4(s) } | |
| func Test5(s []byte) I { return foo5(s) } | |
| func Test6(s []rune) I { return foo6(s) } | |
| func Test7(s []uint8) I { return foo7(s) } | |
| func Test8(s []int32) I { return foo8(s) } | |
| func Test9(s int) I { return foo9(s) } | |
| type bar map[int]int | |
| func (b bar) F() { return } | |
| func TestBar() I { return bar{1: 2} } | |
| type baz int | |
| func IsBaz(x interface{}) bool { _, ok := x.(baz); return ok } | |
| type baz2 int | |
| func IsBaz2(x interface{}) bool { | |
| switch x.(type) { | |
| case baz2: | |
| return true | |
| default: | |
| return false | |
| } | |
| } |