| Basic tests of textDocument/documentSymbols. |
| |
| -- symbol.go -- |
| package main |
| |
| //@symbol(want) |
| |
| import "io" |
| |
| var _ = 1 |
| |
| var x = 42 |
| |
| var nested struct { |
| nestedField struct { |
| f int |
| } |
| } |
| |
| const y = 43 |
| |
| type Number int |
| |
| type Alias = string |
| |
| type NumberAlias = Number |
| |
| type ( |
| Boolean bool |
| BoolAlias = bool |
| ) |
| |
| type Foo struct { |
| Quux |
| W io.Writer |
| Bar int |
| baz string |
| funcField func(int) int |
| } |
| |
| type Quux struct { |
| X, Y float64 |
| } |
| |
| type EmptyStruct struct{} |
| |
| func (f Foo) Baz() string { |
| return f.baz |
| } |
| |
| func _() {} |
| |
| func (q *Quux) Do() {} |
| |
| func main() { |
| } |
| |
| type Stringer interface { |
| String() string |
| } |
| |
| type ABer interface { |
| B() |
| A() string |
| } |
| |
| type WithEmbeddeds interface { |
| Do() |
| ABer |
| io.Writer |
| } |
| |
| type EmptyInterface interface{} |
| |
| func Dunk() int { return 0 } |
| |
| func dunk() {} |
| |
| -- @want -- |
| (*Quux).Do "func()" |
| (Foo).Baz "func() string" +2 lines |
| ABer "interface{...}" +3 lines |
| ABer.A "func() string" |
| ABer.B "func()" |
| Alias "string" |
| BoolAlias "bool" |
| Boolean "bool" |
| Dunk "func() int" |
| EmptyInterface "interface{}" |
| EmptyStruct "struct{}" |
| Foo "struct{...}" +6 lines |
| Foo.Bar "int" |
| Foo.Quux "Quux" |
| Foo.W "io.Writer" |
| Foo.baz "string" |
| Foo.funcField "func(int) int" |
| Number "int" |
| NumberAlias "Number" |
| Quux "struct{...}" +2 lines |
| Quux.X "float64" |
| Quux.Y "float64" |
| Stringer "interface{...}" +2 lines |
| Stringer.String "func() string" |
| WithEmbeddeds "interface{...}" +4 lines |
| WithEmbeddeds.ABer "ABer" |
| WithEmbeddeds.Do "func()" |
| WithEmbeddeds.Writer "io.Writer" |
| dunk "func()" |
| main "func()" +1 lines |
| nested "struct{...}" +4 lines |
| nested.nestedField "struct{...}" +2 lines |
| nested.nestedField.f "int" |
| x "" |
| y "" |