Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201105173854-bc9fc8d8c4bc / internal / lsp / testdata / func_rank / func_rank.go.in
1 package func_rank
2
3 import "net/http"
4
5 var stringAVar = "var"    //@item(stringAVar, "stringAVar", "string", "var")
6 func stringBFunc() string { return "str" } //@item(stringBFunc, "stringBFunc", "func() string", "func")
7 type stringer struct{}    //@item(stringer, "stringer", "struct{...}", "struct")
8
9 func _() stringer //@complete("tr", stringer)
10
11 func _(val stringer) {} //@complete("tr", stringer)
12
13 func (stringer) _() {} //@complete("tr", stringer)
14
15 func _() {
16         var s struct {
17                 AA int    //@item(rankAA, "AA", "int", "field")
18                 AB string //@item(rankAB, "AB", "string", "field")
19                 AC int    //@item(rankAC, "AC", "int", "field")
20         }
21         fnStr := func(string) {}
22         fnStr(s.A)      //@complete(")", rankAB, rankAA, rankAC)
23         fnStr("" + s.A) //@complete(")", rankAB, rankAA, rankAC)
24
25         fnInt := func(int) {}
26         fnInt(-s.A) //@complete(")", rankAA, rankAC, rankAB)
27
28         // no expected type
29         fnInt(func() int { s.A }) //@complete(" }", rankAA, rankAB, rankAC)
30         fnInt(s.A())              //@complete("()", rankAA, rankAC, rankAB)
31         fnInt([]int{}[s.A])       //@complete("])", rankAA, rankAC, rankAB)
32         fnInt([]int{}[:s.A])      //@complete("])", rankAA, rankAC, rankAB)
33
34         fnInt(s.A.(int)) //@complete(".(", rankAA, rankAC, rankAB)
35
36         fnPtr := func(*string) {}
37         fnPtr(&s.A) //@complete(")", rankAB, rankAA, rankAC)
38
39         var aaPtr *string //@item(rankAAPtr, "aaPtr", "*string", "var")
40         var abPtr *int    //@item(rankABPtr, "abPtr", "*int", "var")
41         fnInt(*a)         //@complete(")", rankABPtr, rankAAPtr)
42
43         _ = func() string {
44                 return s.A //@complete(" //", rankAB, rankAA, rankAC)
45         }
46 }
47
48 type foo struct {
49         fooPrivateField int //@item(rankFooPrivField, "fooPrivateField", "int", "field")
50         FooPublicField  int //@item(rankFooPubField, "FooPublicField", "int", "field")
51 }
52
53 func (foo) fooPrivateMethod() int { //@item(rankFooPrivMeth, "fooPrivateMethod", "func() int", "method")
54         return 0
55 }
56
57 func (foo) FooPublicMethod() int { //@item(rankFooPubMeth, "FooPublicMethod", "func() int", "method")
58         return 0
59 }
60
61 func _() {
62         var _ int = foo{}. //@rank(" //", rankFooPrivField, rankFooPubField),rank(" //", rankFooPrivMeth, rankFooPubMeth),rank(" //", rankFooPrivField, rankFooPrivMeth)
63 }
64
65 func _() {
66         HandleFunc //@item(httpHandleFunc, "HandleFunc", "func(pattern string, handler func(ResponseWriter, *Request))", "func")
67         HandlerFunc //@item(httpHandlerFunc, "HandlerFunc", "func(http.ResponseWriter, *http.Request)", "type")
68
69         http.HandleFunc //@rank(" //", httpHandleFunc, httpHandlerFunc)
70 }