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"