From 0926561711323f19c6649aaf9bf227d6addf1209 Mon Sep 17 00:00:00 2001 From: Rebecca Stambler Date: Fri, 29 Mar 2019 13:46:33 -0400 Subject: [PATCH] internal/lsp: fix nil pointer exception in document symbols Change-Id: I168bf7b995aa0b609de67999879addad250eff11 Reviewed-on: https://go-review.googlesource.com/c/tools/+/170006 Reviewed-by: Ian Cottrell --- internal/lsp/source/symbols.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/lsp/source/symbols.go b/internal/lsp/source/symbols.go index d645e330..f95d3f38 100644 --- a/internal/lsp/source/symbols.go +++ b/internal/lsp/source/symbols.go @@ -46,15 +46,21 @@ func DocumentSymbols(ctx context.Context, f File) []Symbol { for _, decl := range file.Decls { switch decl := decl.(type) { case *ast.FuncDecl: - symbols = append(symbols, funcSymbol(decl, info.ObjectOf(decl.Name), fset, q)) + if obj := info.ObjectOf(decl.Name); obj != nil { + symbols = append(symbols, funcSymbol(decl, obj, fset, q)) + } case *ast.GenDecl: for _, spec := range decl.Specs { switch spec := spec.(type) { case *ast.TypeSpec: - symbols = append(symbols, typeSymbol(spec, info.ObjectOf(spec.Name), fset, q)) + if obj := info.ObjectOf(spec.Name); obj != nil { + symbols = append(symbols, typeSymbol(spec, obj, fset, q)) + } case *ast.ValueSpec: for _, name := range spec.Names { - symbols = append(symbols, varSymbol(decl, name, info.ObjectOf(name), fset, q)) + if obj := info.ObjectOf(name); obj != nil { + symbols = append(symbols, varSymbol(decl, name, obj, fset, q)) + } } } }