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 ""