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"