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