Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201028153306-37f0764111ff / internal / lsp / testdata / deep / deep.go
1 package deep
2
3 import "context"
4
5 type deepA struct {
6         b deepB //@item(deepBField, "b", "deepB", "field")
7 }
8
9 type deepB struct {
10 }
11
12 func wantsDeepB(deepB) {}
13
14 func _() {
15         var a deepA   //@item(deepAVar, "a", "deepA", "var")
16         a.b           //@item(deepABField, "a.b", "deepB", "field")
17         wantsDeepB(a) //@deep(")", deepABField, deepAVar)
18
19         deepA{a} //@snippet("}", deepABField, "a.b", "a.b")
20 }
21
22 func wantsContext(context.Context) {}
23
24 func _() {
25         context.Background() //@item(ctxBackground, "context.Background", "func() context.Context", "func", "Background returns a non-nil, empty Context.")
26         context.TODO()       //@item(ctxTODO, "context.TODO", "func() context.Context", "func", "TODO returns a non-nil, empty Context.")
27
28         wantsContext(c) //@rank(")", ctxBackground),rank(")", ctxTODO)
29 }
30
31 func _() {
32         // deepCircle is circular.
33         type deepCircle struct {
34                 *deepCircle
35         }
36         var circle deepCircle   //@item(deepCircle, "circle", "deepCircle", "var")
37         *circle.deepCircle      //@item(deepCircleField, "*circle.deepCircle", "*deepCircle", "field")
38         var _ deepCircle = circ //@deep(" //", deepCircle, deepCircleField)
39 }
40
41 func _() {
42         type deepEmbedC struct {
43         }
44         type deepEmbedB struct {
45                 deepEmbedC
46         }
47         type deepEmbedA struct {
48                 deepEmbedB
49         }
50
51         wantsC := func(deepEmbedC) {}
52
53         var a deepEmbedA //@item(deepEmbedA, "a", "deepEmbedA", "var")
54         a.deepEmbedB     //@item(deepEmbedB, "a.deepEmbedB", "deepEmbedB", "field")
55         a.deepEmbedC     //@item(deepEmbedC, "a.deepEmbedC", "deepEmbedC", "field")
56         wantsC(a)        //@deep(")", deepEmbedC, deepEmbedA, deepEmbedB)
57 }
58
59 func _() {
60         type nested struct {
61                 a int
62                 n *nested //@item(deepNestedField, "n", "*nested", "field")
63         }
64
65         nested{
66                 a: 123, //@deep(" //", deepNestedField)
67         }
68 }
69
70 func _() {
71         var a struct {
72                 b struct {
73                         c int
74                 }
75                 d int
76         }
77
78         a.d   //@item(deepAD, "a.d", "int", "field")
79         a.b.c //@item(deepABC, "a.b.c", "int", "field")
80         a.b   //@item(deepAB, "a.b", "struct{...}", "field")
81         a     //@item(deepA, "a", "struct{...}", "var")
82
83         // "a.d" should be ranked above the deeper "a.b.c"
84         var i int
85         i = a //@deep(" //", deepAD, deepABC, deepA, deepAB)
86 }
87
88 type foo struct {
89         b bar
90 }
91
92 func (f foo) bar() bar {
93         return f.b
94 }
95
96 func (f foo) barPtr() *bar {
97         return &f.b
98 }
99
100 type bar struct{}
101
102 func (b bar) valueReceiver() int {
103         return 0
104 }
105
106 func (b *bar) ptrReceiver() int {
107         return 0
108 }
109
110 func _() {
111         var (
112                 i int
113                 f foo
114         )
115
116         f.bar().valueReceiver    //@item(deepBarValue, "f.bar().valueReceiver", "func() int", "method")
117         f.barPtr().ptrReceiver   //@item(deepBarPtrPtr, "f.barPtr().ptrReceiver", "func() int", "method")
118         f.barPtr().valueReceiver //@item(deepBarPtrValue, "f.barPtr().valueReceiver", "func() int", "method")
119
120         i = fbar //@fuzzy(" //", deepBarValue, deepBarPtrPtr, deepBarPtrValue)
121 }
122
123 func (b baz) Thing() struct{ val int } {
124         return b.thing
125 }
126
127 type baz struct {
128         thing struct{ val int }
129 }
130
131 func (b baz) _() {
132         b.Thing().val    //@item(deepBazMethVal, "b.Thing().val", "int", "field")
133         b.thing.val      //@item(deepBazFieldVal, "b.thing.val", "int", "field")
134         var _ int = bval //@rank(" //", deepBazFieldVal, deepBazMethVal)
135 }