kythe.io@v0.0.68-0.20240422202219-7225dbc01741/kythe/go/indexer/testdata/basic/functions.go (about)

     1  // Package functions tests function and method structure.
     2  package functions
     3  
     4  //- Pkg=vname("package", "test", _, "fun", "go").node/kind package
     5  //- Init=vname("package.<init>@59", "test", _, "fun", "go").node/kind function
     6  //- Init childof Pkg
     7  
     8  // Anonymous functions do not get binding anchors.
     9  //
    10  // - @"func(b bool) {}" defines
    11  // -   Anon1 = vname("package.<init>@59$1", "test", _, "fun", "go")
    12  // - Anon1 param.0 _AnonPB
    13  // - Anon1.node/kind function
    14  var _ = func(b bool) {}
    15  
    16  // - @"func(z int) {}" defines
    17  // -   Anon2 = vname("package.<init>@59$2", "test", _, "fun", "go")
    18  // - Anon2 param.0 _AnonPZ
    19  // - Anon2.node/kind function
    20  var _ = func(z int) {}
    21  
    22  // - @"func F(input int) (output int) { return 17 }" defines Fun
    23  // - @F defines/binding Fun
    24  // -
    25  // - @input defines/binding FunInput
    26  // - FunInput.node/kind variable
    27  // - FunInput.subkind local/parameter
    28  // - Fun param.0 FunInput
    29  // - FunInput childof Fun
    30  // -
    31  // - @output defines/binding FunOutput
    32  // - FunOutput childof Fun
    33  func F(input int) (output int) { return 17 }
    34  
    35  type T struct{}
    36  
    37  // - @"func (recv *T) M(input int) (output int) { return 34 }" defines Meth
    38  // - @M defines/binding Meth
    39  // -
    40  // - @recv defines/binding Recv
    41  // - Recv.node/kind variable
    42  // - Meth param.0 Recv
    43  // - Recv childof Meth
    44  // -
    45  // - @input defines/binding MethInput
    46  // - MethInput.node/kind variable
    47  // - Meth param.1 MethInput
    48  // - MethInput childof Meth
    49  // -
    50  // - @output defines/binding MethOutput
    51  // - MethOutput.node/kind variable
    52  // - MethOutput childof Meth
    53  // - Meth childof _Struct
    54  func (recv *T) M(input int) (output int) { return 34 }
    55  
    56  // - @outer defines/binding Outer
    57  // - Outer.node/kind function
    58  func outer() {
    59  	//- @"func(q bool) {}" defines Inner = vname("func outer$1", _, _, _, _)
    60  	//- Inner param.0 _InnerPQ
    61  	//- Inner.node/kind function
    62  	_ = func(q bool) {}
    63  }
    64  
    65  // - @ignore defines/binding Ignore
    66  // - Ignore param.0 Unnamed
    67  // - Unnamed.node/kind variable
    68  // - !{_X defines/binding Unnamed}
    69  func ignore(_ int) bool { return false }