kythe.io@v0.0.68-0.20240422202219-7225dbc01741/kythe/go/indexer/testdata/generics/genericstruct.go (about) 1 package genericstruct 2 3 func main() { 4 //- @"Container[string]" ref ContainerApp 5 //- @Container ref Container 6 //- @string ref String 7 c := &Container[string]{"element"} 8 //- ContainerApp.node/kind "tapp" 9 //- ContainerApp param.0 Container 10 //- ContainerApp param.1 String 11 12 //- @Element ref Element 13 _ = c.Element 14 15 //- @"Pair[string, int]" ref PairApp 16 //- @Pair ref Pair 17 //- @string ref String 18 //- @int ref Int 19 _ = &Pair[string, int]{"first", 2} 20 //- PairApp.node/kind "tapp" 21 //- PairApp param.0 Pair 22 //- PairApp param.1 String 23 //- PairApp param.2 Int 24 } 25 26 // - @Container defines/binding Container 27 // - Container.node/kind record 28 // - @T defines/binding TVar 29 // - TVar.node/kind tvar 30 // - Container tparam.0 TVar 31 type Container[T any] struct { 32 //- @T ref TVar 33 //- @Element defines/binding Element 34 Element T 35 36 //- Element.node/kind variable 37 //- Element.subkind field 38 } 39 40 // - @T defines/binding TVar2 41 // - @U defines/binding UVar 42 // - !{@T defines/binding TVar} 43 // - !{@T ref TVar} 44 type Pair[T any, U any] struct { 45 //- @T ref TVar2 46 //- !{@T defines/binding TVar} 47 //- !{@T ref TVar} 48 First T 49 //- @U ref UVar 50 Second U 51 } 52 53 // kythe/go/indexer/genericstruct_test.Container.T 54 //- TVar code TVarCode 55 //- TVarCode.kind "BOX" 56 //- TVarCode child.0 TVarName 57 //- TVarName child.0 C 58 //- TVarName child.1 I 59 //- C.kind "CONTEXT" 60 //- C.post_child_text "." 61 //- C.add_final_list_token "true" 62 //- C child.0 Pkg 63 //- C child.1 Struct 64 //- Pkg.kind "IDENTIFIER" 65 //- Pkg.pre_text "kythe/go/indexer/genericstruct_test" 66 //- Struct.kind "IDENTIFIER" 67 //- Struct.pre_text "Container" 68 //- I.kind "IDENTIFIER" 69 //- I.pre_text "T"