Home | History | Annotate | Download | only in issue5755.dir
      1 // Copyright 2013 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 package a
      6 
      7 type I interface {
      8 	F()
      9 }
     10 
     11 type foo1 []byte
     12 type foo2 []rune
     13 type foo3 []uint8
     14 type foo4 []int32
     15 type foo5 string
     16 type foo6 string
     17 type foo7 string
     18 type foo8 string
     19 type foo9 string
     20 
     21 func (f foo1) F() { return }
     22 func (f foo2) F() { return }
     23 func (f foo3) F() { return }
     24 func (f foo4) F() { return }
     25 func (f foo5) F() { return }
     26 func (f foo6) F() { return }
     27 func (f foo7) F() { return }
     28 func (f foo8) F() { return }
     29 func (f foo9) F() { return }
     30 
     31 func Test1(s string) I  { return foo1(s) }
     32 func Test2(s string) I  { return foo2(s) }
     33 func Test3(s string) I  { return foo3(s) }
     34 func Test4(s string) I  { return foo4(s) }
     35 func Test5(s []byte) I  { return foo5(s) }
     36 func Test6(s []rune) I  { return foo6(s) }
     37 func Test7(s []uint8) I { return foo7(s) }
     38 func Test8(s []int32) I { return foo8(s) }
     39 func Test9(s int) I     { return foo9(s) }
     40 
     41 type bar map[int]int
     42 
     43 func (b bar) F() { return }
     44 
     45 func TestBar() I { return bar{1: 2} }
     46 
     47 type baz int
     48 
     49 func IsBaz(x interface{}) bool { _, ok := x.(baz); return ok }
     50 
     51 type baz2 int
     52 
     53 func IsBaz2(x interface{}) bool {
     54 	switch x.(type) {
     55 	case baz2:
     56 		return true
     57 	default:
     58 		return false
     59 	}
     60 }
     61