| This test exercises deep completion. |
| |
| It was originally bundled with deep.go, but is split into a separate test as |
| the new marker tests do not permit mutating server options for individual |
| marks. |
| |
| -- flags -- |
| -ignore_extra_diags |
| |
| -- go.mod -- |
| module golang.org/lsptests |
| |
| go 1.18 |
| |
| -- deep/deep2.go -- |
| package deep |
| |
| type foo struct { |
| b bar |
| } |
| |
| func (f foo) bar() bar { |
| return f.b |
| } |
| |
| func (f foo) barPtr() *bar { |
| return &f.b |
| } |
| |
| type bar struct{} |
| |
| func (b bar) valueReceiver() int { |
| return 0 |
| } |
| |
| func (b *bar) ptrReceiver() int { |
| return 0 |
| } |
| |
| func _() { |
| var ( |
| i int |
| f foo |
| ) |
| |
| f.bar().valueReceiver //@item(deepBarValue, "f.bar().valueReceiver", "func() int", "method") |
| f.barPtr().ptrReceiver //@item(deepBarPtrPtr, "f.barPtr().ptrReceiver", "func() int", "method") |
| f.barPtr().valueReceiver //@item(deepBarPtrValue, "f.barPtr().valueReceiver", "func() int", "method") |
| |
| i = fbar //@complete(" //", deepBarValue, deepBarPtrPtr, deepBarPtrValue) |
| } |
| |
| func (b baz) Thing() struct{ val int } { |
| return b.thing |
| } |
| |
| type baz struct { |
| thing struct{ val int } |
| } |
| |
| func (b baz) _() { |
| b.Thing().val //@item(deepBazMethVal, "b.Thing().val", "int", "field") |
| b.thing.val //@item(deepBazFieldVal, "b.thing.val", "int", "field") |
| var _ int = bval //@rank(" //", deepBazFieldVal, deepBazMethVal) |
| } |