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 }