diff --git a/internal/lsp/source/symbols.go b/internal/lsp/source/symbols.go index 989492cc73..2f964e4fe4 100644 --- a/internal/lsp/source/symbols.go +++ b/internal/lsp/source/symbols.go @@ -129,40 +129,12 @@ func funcSymbol(ctx context.Context, view View, pkg Package, decl *ast.FuncDecl, return s, nil } -func setKind(s *protocol.DocumentSymbol, typ types.Type, q types.Qualifier) { - switch typ := typ.Underlying().(type) { - case *types.Interface: - s.Kind = protocol.Interface - case *types.Struct: - s.Kind = protocol.Struct - case *types.Signature: - s.Kind = protocol.Function - if typ.Recv() != nil { - s.Kind = protocol.Method - } - case *types.Named: - setKind(s, typ.Underlying(), q) - case *types.Basic: - i := typ.Info() - switch { - case i&types.IsNumeric != 0: - s.Kind = protocol.Number - case i&types.IsBoolean != 0: - s.Kind = protocol.Boolean - case i&types.IsString != 0: - s.Kind = protocol.String - } - default: - s.Kind = protocol.Variable - } -} - func typeSymbol(ctx context.Context, view View, pkg Package, info *types.Info, spec *ast.TypeSpec, obj types.Object, q types.Qualifier) (protocol.DocumentSymbol, error) { s := protocol.DocumentSymbol{ Name: obj.Name(), } s.Detail, _ = formatType(obj.Type(), q) - setKind(&s, obj.Type(), q) + s.Kind = typeToKind(obj.Type()) var err error s.Range, err = nodeToProtocolRange(view, pkg, spec) @@ -236,7 +208,7 @@ func typeSymbol(ctx context.Context, view View, pkg Package, info *types.Info, s child := protocol.DocumentSymbol{ Name: types.TypeString(embedded, q), } - setKind(&child, embedded, q) + child.Kind = typeToKind(embedded) var spanNode, selectionNode ast.Node Embeddeds: for _, f := range ai.Methods.List {