kythe.io@v0.0.68-0.20240422202219-7225dbc01741/kythe/go/indexer/testdata/generics/genericinterface.go (about) 1 package genericinterface 2 3 // - @Interface defines/binding Interface 4 // - Interface.node/kind interface 5 // - @T defines/binding TVar 6 // - TVar.node/kind tvar 7 // - Interface tparam.0 TVar 8 type Interface[T any] interface { 9 //- @Accept defines/binding Accept 10 //- @T ref TVar 11 Accept(T) 12 } 13 14 // - @Thing defines/binding Thing 15 // - Thing satisfies Interface 16 type Thing struct{ S string } 17 18 // - @Accept defines/binding ThingAccept 19 // - ThingAccept overrides Accept 20 func (t *Thing) Accept(s string) { t.S = s } 21 22 // - @Interface ref Interface 23 var _ Interface[string] = &Thing{"hello"} 24 25 // - @Container defines/binding Container 26 // - Container satisfies Interface 27 type Container[T any] struct { 28 //- @Element defines/binding Element 29 //- Element.node/kind variable 30 Element T 31 } 32 33 // - @Accept defines/binding ContainerAccept 34 // - ContainerAccept overrides Accept 35 func (c *Container[T]) Accept(t T) { c.Element = t } 36 37 // kythe/go/indexer/genericinterface_test.Interface.T 38 //- TVar code TVarCode 39 //- TVarCode.kind "BOX" 40 //- TVarCode child.0 TVarName 41 //- TVarName child.0 C 42 //- TVarName child.1 I 43 //- C.kind "CONTEXT" 44 //- C.post_child_text "." 45 //- C.add_final_list_token "true" 46 //- C child.0 Pkg 47 //- C child.1 Struct 48 //- Pkg.kind "IDENTIFIER" 49 //- Pkg.pre_text "kythe/go/indexer/genericinterface_test" 50 //- Struct.kind "IDENTIFIER" 51 //- Struct.pre_text "Interface" 52 //- I.kind "IDENTIFIER" 53 //- I.pre_text "T"