internal/lsp: convert logging calls
Change-Id: I09ee44d0121b7ced001b8195f9fa81b5225cb0c7 Reviewed-on: https://go-review.googlesource.com/c/tools/+/186197 Run-TryBot: Ian Cottrell <iancottrell@google.com> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
This commit is contained in:
parent
7ec096a112
commit
73497f0562
|
@ -16,8 +16,9 @@ import (
|
|||
"golang.org/x/tools/go/analysis"
|
||||
"golang.org/x/tools/go/packages"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/telemetry"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/trace"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -130,7 +131,7 @@ func (imp *importer) typeCheck(ctx context.Context, id packageID) (*pkg, error)
|
|||
uri := span.FileURI(filename)
|
||||
f, err := imp.view.getFile(ctx, uri)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "unable to get file for %s: %v", f.URI(), err)
|
||||
log.Error(ctx, "unable to get file", err, telemetry.File.Of(f.URI()))
|
||||
continue
|
||||
}
|
||||
pkg.files = append(pkg.files, imp.view.session.cache.ParseGoHandle(f.Handle(ctx), mode))
|
||||
|
|
|
@ -12,7 +12,8 @@ import (
|
|||
"sync"
|
||||
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -58,6 +59,7 @@ func (f *goFile) GetToken(ctx context.Context) (*token.File, error) {
|
|||
func (f *goFile) GetAST(ctx context.Context, mode source.ParseMode) (*ast.File, error) {
|
||||
f.view.mu.Lock()
|
||||
defer f.view.mu.Unlock()
|
||||
ctx = telemetry.File.With(ctx, f.URI())
|
||||
|
||||
if f.isDirty(ctx) || f.wrongParseMode(ctx, mode) {
|
||||
if _, err := f.view.loadParseTypecheck(ctx, f); err != nil {
|
||||
|
@ -88,10 +90,11 @@ func (f *goFile) GetAST(ctx context.Context, mode source.ParseMode) (*ast.File,
|
|||
func (f *goFile) GetPackages(ctx context.Context) []source.Package {
|
||||
f.view.mu.Lock()
|
||||
defer f.view.mu.Unlock()
|
||||
ctx = telemetry.File.With(ctx, f.URI())
|
||||
|
||||
if f.isDirty(ctx) || f.wrongParseMode(ctx, source.ParseFull) {
|
||||
if errs, err := f.view.loadParseTypecheck(ctx, f); err != nil {
|
||||
xlog.Errorf(ctx, "unable to check package for %s: %v", f.URI(), err)
|
||||
log.Error(ctx, "unable to check package", err, telemetry.File)
|
||||
|
||||
// Create diagnostics for errors if we are able to.
|
||||
if len(errs) > 0 {
|
||||
|
|
|
@ -10,7 +10,9 @@ import (
|
|||
|
||||
"golang.org/x/tools/go/packages"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/tag"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -101,9 +103,9 @@ func (v *view) checkMetadata(ctx context.Context, f *goFile) (map[packageID]*met
|
|||
// Track missing imports as we look at the package's errors.
|
||||
missingImports := make(map[packagePath]struct{})
|
||||
|
||||
xlog.Debugf(ctx, "packages.Load: found %v packages", len(pkgs))
|
||||
log.Print(ctx, "go/packages.Load", tag.Of("packages", len(pkgs)))
|
||||
for _, pkg := range pkgs {
|
||||
xlog.Debugf(ctx, "packages.Load: package %s with files %v", pkg.PkgPath, pkg.CompiledGoFiles)
|
||||
log.Print(ctx, "go/packages.Load", tag.Of("package", pkg.PkgPath), tag.Of("files", pkg.CompiledGoFiles))
|
||||
// If the package comes back with errors from `go list`,
|
||||
// don't bother type-checking it.
|
||||
if len(pkg.Errors) > 0 {
|
||||
|
@ -228,12 +230,12 @@ func (v *view) link(ctx context.Context, pkgPath packagePath, pkg *packages.Pack
|
|||
for _, filename := range m.files {
|
||||
f, err := v.getFile(ctx, span.FileURI(filename))
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "no file %s: %v", filename, err)
|
||||
log.Error(ctx, "no file", err, telemetry.File.Of(filename))
|
||||
continue
|
||||
}
|
||||
gof, ok := f.(*goFile)
|
||||
if !ok {
|
||||
xlog.Errorf(ctx, "not a Go file: %s", f.URI())
|
||||
log.Error(ctx, "not a Go file", nil, telemetry.File.Of(filename))
|
||||
continue
|
||||
}
|
||||
if gof.meta == nil {
|
||||
|
@ -258,7 +260,7 @@ func (v *view) link(ctx context.Context, pkgPath packagePath, pkg *packages.Pack
|
|||
}
|
||||
if _, ok := m.children[packageID(importPkg.ID)]; !ok {
|
||||
if err := v.link(ctx, importPkgPath, importPkg, m, missingImports); err != nil {
|
||||
xlog.Errorf(ctx, "error in dependency %s: %v", importPkgPath, err)
|
||||
log.Error(ctx, "error in dependency", err, telemetry.Package.Of(importPkgPath))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,8 +16,9 @@ import (
|
|||
|
||||
"golang.org/x/tools/internal/lsp/debug"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/telemetry"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/trace"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/span"
|
||||
"golang.org/x/tools/internal/xcontext"
|
||||
)
|
||||
|
@ -182,6 +183,7 @@ func (s *session) removeView(ctx context.Context, view *view) error {
|
|||
|
||||
// TODO: Propagate the language ID through to the view.
|
||||
func (s *session) DidOpen(ctx context.Context, uri span.URI, _ source.FileKind, text []byte) {
|
||||
ctx = telemetry.File.With(ctx, uri)
|
||||
// Mark the file as open.
|
||||
s.openFiles.Store(uri, true)
|
||||
|
||||
|
@ -196,12 +198,12 @@ func (s *session) DidOpen(ctx context.Context, uri span.URI, _ source.FileKind,
|
|||
if strings.HasPrefix(string(uri), string(view.Folder())) {
|
||||
f, err := view.GetFile(ctx, uri)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "error getting file for %s", uri)
|
||||
log.Error(ctx, "error getting file", nil, telemetry.File)
|
||||
return
|
||||
}
|
||||
gof, ok := f.(*goFile)
|
||||
if !ok {
|
||||
xlog.Errorf(ctx, "%s is not a Go file", uri)
|
||||
log.Error(ctx, "not a Go file", nil, telemetry.File)
|
||||
return
|
||||
}
|
||||
// Mark file as open.
|
||||
|
@ -273,7 +275,7 @@ func (s *session) openOverlay(ctx context.Context, uri span.URI, data []byte) {
|
|||
}
|
||||
_, hash, err := s.cache.GetFile(uri).Read(ctx)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "failed to read %s: %v", uri, err)
|
||||
log.Error(ctx, "failed to read", err, telemetry.File)
|
||||
return
|
||||
}
|
||||
if hash == s.overlays[uri].hash {
|
||||
|
|
|
@ -6,6 +6,7 @@ package cache
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"go/ast"
|
||||
"go/parser"
|
||||
"go/token"
|
||||
|
@ -19,7 +20,8 @@ import (
|
|||
"golang.org/x/tools/internal/imports"
|
||||
"golang.org/x/tools/internal/lsp/debug"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -136,7 +138,7 @@ func (v *view) Config(ctx context.Context) *packages.Config {
|
|||
panic("go/packages must not be used to parse files")
|
||||
},
|
||||
Logf: func(format string, args ...interface{}) {
|
||||
xlog.Infof(ctx, format, args...)
|
||||
log.Print(ctx, fmt.Sprintf(format, args...))
|
||||
},
|
||||
Tests: true,
|
||||
}
|
||||
|
@ -156,8 +158,8 @@ func (v *view) buildProcessEnv(ctx context.Context) *imports.ProcessEnv {
|
|||
cfg := v.Config(ctx)
|
||||
env := &imports.ProcessEnv{
|
||||
WorkingDir: cfg.Dir,
|
||||
Logf: func(format string, u ...interface{}) {
|
||||
xlog.Infof(v.backgroundCtx, format, u...)
|
||||
Logf: func(format string, args ...interface{}) {
|
||||
log.Print(ctx, fmt.Sprintf(format, args...))
|
||||
},
|
||||
}
|
||||
for _, kv := range cfg.Env {
|
||||
|
@ -242,7 +244,7 @@ func (v *view) buildBuiltinPkg(ctx context.Context) {
|
|||
cfg := *v.Config(ctx)
|
||||
pkgs, err := packages.Load(&cfg, "builtin")
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "error getting package metadata for \"builtin\" package: %v", err)
|
||||
log.Error(ctx, "error getting package metadata for \"builtin\" package", err)
|
||||
}
|
||||
if len(pkgs) != 1 {
|
||||
v.builtinPkg, _ = ast.NewPackage(cfg.Fset, nil, nil, nil)
|
||||
|
@ -330,12 +332,12 @@ func (v *view) remove(ctx context.Context, id packageID, seen map[packageID]stru
|
|||
for _, filename := range m.files {
|
||||
f, err := v.findFile(span.FileURI(filename))
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "cannot find file %s: %v", f.URI(), err)
|
||||
log.Error(ctx, "cannot find file", err, telemetry.File.Of(f.URI()))
|
||||
continue
|
||||
}
|
||||
gof, ok := f.(*goFile)
|
||||
if !ok {
|
||||
xlog.Errorf(ctx, "non-Go file %v", f.URI())
|
||||
log.Error(ctx, "non-Go file", nil, telemetry.File.Of(f.URI()))
|
||||
continue
|
||||
}
|
||||
gof.mu.Lock()
|
||||
|
|
|
@ -11,7 +11,8 @@ import (
|
|||
|
||||
"golang.org/x/tools/internal/lsp/protocol"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -58,7 +59,7 @@ func (s *Server) codeAction(ctx context.Context, params *protocol.CodeActionPara
|
|||
if s.wantSuggestedFixes {
|
||||
qf, err := quickFixes(ctx, view, gof)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "quick fixes failed for %s: %v", uri, err)
|
||||
log.Error(ctx, "quick fixes failed", err, telemetry.File.Of(uri))
|
||||
}
|
||||
codeActions = append(codeActions, qf...)
|
||||
}
|
||||
|
|
|
@ -12,7 +12,8 @@ import (
|
|||
|
||||
"golang.org/x/tools/internal/lsp/protocol"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/tag"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -36,7 +37,7 @@ func (s *Server) completion(ctx context.Context, params *protocol.CompletionPara
|
|||
WantDocumentaton: s.wantCompletionDocumentation,
|
||||
})
|
||||
if err != nil {
|
||||
xlog.Infof(ctx, "no completions found for %s:%v:%v: %v", uri, int(params.Position.Line), int(params.Position.Character), err)
|
||||
log.Print(ctx, "no completions found", tag.Of("At", rng), tag.Of("Failure", err))
|
||||
}
|
||||
return &protocol.CompletionList{
|
||||
IsIncomplete: false,
|
||||
|
@ -63,11 +64,11 @@ func (s *Server) toProtocolCompletionItems(ctx context.Context, view source.View
|
|||
prefix = strings.ToLower(surrounding.Prefix())
|
||||
spn, err := surrounding.Range.Span()
|
||||
if err != nil {
|
||||
xlog.Infof(ctx, "failed to get span for surrounding position: %s:%v:%v: %v", m.URI, int(pos.Line), int(pos.Character), err)
|
||||
log.Print(ctx, "failed to get span for surrounding position: %s:%v:%v: %v", tag.Of("Position", pos), tag.Of("Failure", err))
|
||||
} else {
|
||||
rng, err := m.Range(spn)
|
||||
if err != nil {
|
||||
xlog.Infof(ctx, "failed to convert surrounding position: %s:%v:%v: %v", m.URI, int(pos.Line), int(pos.Character), err)
|
||||
log.Print(ctx, "failed to convert surrounding position", tag.Of("Position", pos), tag.Of("Failure", err))
|
||||
} else {
|
||||
insertionRange = rng
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@ import (
|
|||
"context"
|
||||
"go/token"
|
||||
"html/template"
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/http/pprof"
|
||||
|
@ -19,7 +18,9 @@ import (
|
|||
"strconv"
|
||||
"sync"
|
||||
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/metric"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/tag"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/worker"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
@ -213,7 +214,7 @@ func Serve(ctx context.Context, addr string) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
log.Printf("Debug serving on port: %d", listener.Addr().(*net.TCPAddr).Port)
|
||||
log.Print(ctx, "Debug serving", tag.Of("Port", listener.Addr().(*net.TCPAddr).Port))
|
||||
prometheus := prometheus{}
|
||||
metric.RegisterObservers(prometheus.observeMetric)
|
||||
rpcs := rpcs{}
|
||||
|
@ -236,10 +237,10 @@ func Serve(ctx context.Context, addr string) error {
|
|||
mux.HandleFunc("/info", Render(infoTmpl, getInfo))
|
||||
mux.HandleFunc("/memory", Render(memoryTmpl, getMemory))
|
||||
if err := http.Serve(listener, mux); err != nil {
|
||||
log.Printf("Debug server failed with %v", err)
|
||||
log.Error(ctx, "Debug server failed", err)
|
||||
return
|
||||
}
|
||||
log.Printf("Debug server finished")
|
||||
log.Print(ctx, "Debug server finished")
|
||||
}()
|
||||
return nil
|
||||
}
|
||||
|
@ -254,7 +255,7 @@ func Render(tmpl *template.Template, fun func(*http.Request) interface{}) func(h
|
|||
data = fun(r)
|
||||
}
|
||||
if err := tmpl.Execute(w, data); err != nil {
|
||||
log.Print(err)
|
||||
log.Error(context.Background(), "", err)
|
||||
}
|
||||
})
|
||||
<-done
|
||||
|
|
|
@ -10,14 +10,16 @@ import (
|
|||
|
||||
"golang.org/x/tools/internal/lsp/protocol"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
func (s *Server) Diagnostics(ctx context.Context, view source.View, uri span.URI) {
|
||||
ctx = telemetry.File.With(ctx, uri)
|
||||
f, err := view.GetFile(ctx, uri)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "no file for %s: %v", uri, err)
|
||||
log.Error(ctx, "no file", err, telemetry.File)
|
||||
return
|
||||
}
|
||||
// For non-Go files, don't return any diagnostics.
|
||||
|
@ -27,7 +29,7 @@ func (s *Server) Diagnostics(ctx context.Context, view source.View, uri span.URI
|
|||
}
|
||||
reports, err := source.Diagnostics(ctx, view, gof, s.disabledAnalyses)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "failed to compute diagnostics for %s: %v", gof.URI(), err)
|
||||
log.Error(ctx, "failed to compute diagnostics", err, telemetry.File)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -39,7 +41,7 @@ func (s *Server) Diagnostics(ctx context.Context, view source.View, uri span.URI
|
|||
if s.undelivered == nil {
|
||||
s.undelivered = make(map[span.URI][]source.Diagnostic)
|
||||
}
|
||||
xlog.Errorf(ctx, "failed to deliver diagnostic for %s (will retry): %v", uri, err)
|
||||
log.Error(ctx, "failed to deliver diagnostic (will retry)", err, telemetry.File)
|
||||
s.undelivered[uri] = diagnostics
|
||||
continue
|
||||
}
|
||||
|
@ -50,7 +52,7 @@ func (s *Server) Diagnostics(ctx context.Context, view source.View, uri span.URI
|
|||
// undelivered ones (only for remaining URIs).
|
||||
for uri, diagnostics := range s.undelivered {
|
||||
if err := s.publishDiagnostics(ctx, view, uri, diagnostics); err != nil {
|
||||
xlog.Errorf(ctx, "failed to deliver diagnostic for %s (will not retry): %v", uri, err)
|
||||
log.Error(ctx, "failed to deliver diagnostic for (will not retry)", err, telemetry.File)
|
||||
}
|
||||
// If we fail to deliver the same diagnostics twice, just give up.
|
||||
delete(s.undelivered, uri)
|
||||
|
|
|
@ -15,7 +15,8 @@ import (
|
|||
"golang.org/x/tools/internal/lsp/debug"
|
||||
"golang.org/x/tools/internal/lsp/protocol"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/tag"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -155,7 +156,7 @@ func (s *Server) initialized(ctx context.Context, params *protocol.InitializedPa
|
|||
}
|
||||
buf := &bytes.Buffer{}
|
||||
debug.PrintVersionInfo(buf, true, debug.PlainText)
|
||||
xlog.Infof(ctx, "%s", buf)
|
||||
log.Print(ctx, buf.String())
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -210,7 +211,7 @@ func (s *Server) processConfig(ctx context.Context, view source.View, config int
|
|||
case "FullDocumentation":
|
||||
s.hoverKind = source.FullDocumentation
|
||||
default:
|
||||
xlog.Errorf(ctx, "unsupported hover kind %s", hoverKind)
|
||||
log.Error(ctx, "unsupported hover kind", nil, tag.Of("HoverKind", hoverKind))
|
||||
// The default value is already be set to synopsis.
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,8 @@ import (
|
|||
|
||||
"golang.org/x/tools/internal/lsp/protocol"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/tag"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -30,7 +31,7 @@ func (s *Server) documentHighlight(ctx context.Context, params *protocol.TextDoc
|
|||
}
|
||||
spans, err := source.Highlight(ctx, f, rng.Start)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "no highlight for %s: %v", spn, err)
|
||||
log.Error(ctx, "no highlight", err, tag.Of("Span", spn))
|
||||
}
|
||||
return toProtocolHighlight(m, spans), nil
|
||||
}
|
||||
|
|
|
@ -15,7 +15,8 @@ import (
|
|||
|
||||
"golang.org/x/tools/internal/lsp/protocol"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/tag"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -37,13 +38,13 @@ func (s *Server) documentLink(ctx context.Context, params *protocol.DocumentLink
|
|||
case *ast.ImportSpec:
|
||||
target, err := strconv.Unquote(n.Path.Value)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "cannot unquote import path %s: %v", n.Path.Value, err)
|
||||
log.Error(ctx, "cannot unquote import path", err, tag.Of("Path", n.Path.Value))
|
||||
return false
|
||||
}
|
||||
target = "https://godoc.org/" + target
|
||||
l, err := toProtocolLink(view, m, target, n.Pos(), n.End())
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "cannot initialize DocumentLink %s: %v", n.Path.Value, err)
|
||||
log.Error(ctx, "cannot initialize DocumentLink", err, tag.Of("Path", n.Path.Value))
|
||||
return false
|
||||
}
|
||||
links = append(links, l)
|
||||
|
@ -54,7 +55,7 @@ func (s *Server) documentLink(ctx context.Context, params *protocol.DocumentLink
|
|||
}
|
||||
l, err := findLinksInString(n.Value, n.Pos(), view, m)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "cannot find links in string: %v", err)
|
||||
log.Error(ctx, "cannot find links in string", err)
|
||||
return false
|
||||
}
|
||||
links = append(links, l...)
|
||||
|
@ -67,7 +68,7 @@ func (s *Server) documentLink(ctx context.Context, params *protocol.DocumentLink
|
|||
for _, comment := range commentGroup.List {
|
||||
l, err := findLinksInString(comment.Text, comment.Pos(), view, m)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "cannot find links in comment: %v", err)
|
||||
log.Error(ctx, "cannot find links in comment", err)
|
||||
continue
|
||||
}
|
||||
links = append(links, l...)
|
||||
|
|
|
@ -8,8 +8,8 @@ import (
|
|||
"context"
|
||||
|
||||
"golang.org/x/tools/internal/jsonrpc2"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/trace"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/xcontext"
|
||||
)
|
||||
|
||||
|
@ -58,6 +58,6 @@ func sendParseError(ctx context.Context, req *jsonrpc2.Request, err error) {
|
|||
err = jsonrpc2.NewErrorf(jsonrpc2.CodeParseError, "%v", err)
|
||||
}
|
||||
if err := req.Reply(ctx, nil, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ import (
|
|||
"encoding/json"
|
||||
|
||||
"golang.org/x/tools/internal/jsonrpc2"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
)
|
||||
|
||||
type Client interface {
|
||||
|
@ -43,7 +43,7 @@ func (h clientHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.client.ShowMessage(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "window/logMessage": // notif
|
||||
|
@ -53,7 +53,7 @@ func (h clientHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.client.LogMessage(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "telemetry/event": // notif
|
||||
|
@ -63,7 +63,7 @@ func (h clientHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.client.Event(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/publishDiagnostics": // notif
|
||||
|
@ -73,7 +73,7 @@ func (h clientHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.client.PublishDiagnostics(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "workspace/workspaceFolders": // req
|
||||
|
@ -83,7 +83,7 @@ func (h clientHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.client.WorkspaceFolders(ctx)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "workspace/configuration": // req
|
||||
|
@ -94,7 +94,7 @@ func (h clientHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.client.Configuration(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "client/registerCapability": // req
|
||||
|
@ -105,7 +105,7 @@ func (h clientHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
err := h.client.RegisterCapability(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, nil, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "client/unregisterCapability": // req
|
||||
|
@ -116,7 +116,7 @@ func (h clientHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
err := h.client.UnregisterCapability(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, nil, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "window/showMessageRequest": // req
|
||||
|
@ -127,7 +127,7 @@ func (h clientHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.client.ShowMessageRequest(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "workspace/applyEdit": // req
|
||||
|
@ -138,7 +138,7 @@ func (h clientHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.client.ApplyEdit(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import (
|
|||
"encoding/json"
|
||||
|
||||
"golang.org/x/tools/internal/jsonrpc2"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
)
|
||||
|
||||
type Server interface {
|
||||
|
@ -75,7 +75,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.server.DidChangeWorkspaceFolders(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "initialized": // notif
|
||||
|
@ -85,12 +85,12 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.server.Initialized(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "exit": // notif
|
||||
if err := h.server.Exit(ctx); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "workspace/didChangeConfiguration": // notif
|
||||
|
@ -100,7 +100,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.server.DidChangeConfiguration(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/didOpen": // notif
|
||||
|
@ -110,7 +110,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.server.DidOpen(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/didChange": // notif
|
||||
|
@ -120,7 +120,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.server.DidChange(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/didClose": // notif
|
||||
|
@ -130,7 +130,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.server.DidClose(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/didSave": // notif
|
||||
|
@ -140,7 +140,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.server.DidSave(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/willSave": // notif
|
||||
|
@ -150,7 +150,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.server.WillSave(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "workspace/didChangeWatchedFiles": // notif
|
||||
|
@ -160,7 +160,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.server.DidChangeWatchedFiles(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "$/setTraceNotification": // notif
|
||||
|
@ -170,7 +170,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.server.SetTraceNotification(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "$/logTraceNotification": // notif
|
||||
|
@ -180,7 +180,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
return true
|
||||
}
|
||||
if err := h.server.LogTraceNotification(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/implementation": // req
|
||||
|
@ -191,7 +191,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.Implementation(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/typeDefinition": // req
|
||||
|
@ -202,7 +202,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.TypeDefinition(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/documentColor": // req
|
||||
|
@ -213,7 +213,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.DocumentColor(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/colorPresentation": // req
|
||||
|
@ -224,7 +224,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.ColorPresentation(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/foldingRange": // req
|
||||
|
@ -235,7 +235,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.FoldingRange(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/declaration": // req
|
||||
|
@ -246,7 +246,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.Declaration(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/selectionRange": // req
|
||||
|
@ -257,7 +257,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.SelectionRange(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "initialize": // req
|
||||
|
@ -268,7 +268,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.Initialize(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "shutdown": // req
|
||||
|
@ -278,7 +278,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
err := h.server.Shutdown(ctx)
|
||||
if err := r.Reply(ctx, nil, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/willSaveWaitUntil": // req
|
||||
|
@ -289,7 +289,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.WillSaveWaitUntil(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/completion": // req
|
||||
|
@ -300,7 +300,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.Completion(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "completionItem/resolve": // req
|
||||
|
@ -311,7 +311,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.Resolve(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/hover": // req
|
||||
|
@ -322,7 +322,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.Hover(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/signatureHelp": // req
|
||||
|
@ -333,7 +333,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.SignatureHelp(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/definition": // req
|
||||
|
@ -344,7 +344,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.Definition(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/references": // req
|
||||
|
@ -355,7 +355,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.References(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/documentHighlight": // req
|
||||
|
@ -366,7 +366,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.DocumentHighlight(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/documentSymbol": // req
|
||||
|
@ -377,7 +377,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.DocumentSymbol(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "workspace/symbol": // req
|
||||
|
@ -388,7 +388,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.Symbol(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/codeAction": // req
|
||||
|
@ -399,7 +399,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.CodeAction(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/codeLens": // req
|
||||
|
@ -410,7 +410,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.CodeLens(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "codeLens/resolve": // req
|
||||
|
@ -421,7 +421,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.ResolveCodeLens(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/formatting": // req
|
||||
|
@ -432,7 +432,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.Formatting(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/rangeFormatting": // req
|
||||
|
@ -443,7 +443,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.RangeFormatting(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/onTypeFormatting": // req
|
||||
|
@ -454,7 +454,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.OnTypeFormatting(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/rename": // req
|
||||
|
@ -465,7 +465,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.Rename(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/prepareRename": // req
|
||||
|
@ -476,7 +476,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.PrepareRename(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "textDocument/documentLink": // req
|
||||
|
@ -487,7 +487,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.DocumentLink(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "documentLink/resolve": // req
|
||||
|
@ -498,7 +498,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.ResolveDocumentLink(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
case "workspace/executeCommand": // req
|
||||
|
@ -509,7 +509,7 @@ func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, deliver
|
|||
}
|
||||
resp, err := h.server.ExecuteCommand(ctx, ¶ms)
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true
|
||||
|
||||
|
|
|
@ -117,12 +117,12 @@ function goNot(side: side, m: string) {
|
|||
return true
|
||||
}
|
||||
if err := h.${side.name}.${nm}(ctx, ¶ms); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true`;
|
||||
} else {
|
||||
case1 = `if err := h.${side.name}.${nm}(ctx); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true`;
|
||||
}
|
||||
|
@ -160,18 +160,18 @@ function goReq(side: side, m: string) {
|
|||
}
|
||||
const arg2 = a == '' ? '' : ', ¶ms';
|
||||
let case2 = `if err := h.${side.name}.${nm}(ctx${arg2}); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}`;
|
||||
if (b != '') {
|
||||
case2 = `resp, err := h.${side.name}.${nm}(ctx${arg2})
|
||||
if err := r.Reply(ctx, resp, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true`;
|
||||
} else { // response is nil
|
||||
case2 = `err := h.${side.name}.${nm}(ctx${arg2})
|
||||
if err := r.Reply(ctx, nil, err); err != nil {
|
||||
xlog.Errorf(ctx, "%v", err)
|
||||
log.Error(ctx, "", err)
|
||||
}
|
||||
return true`
|
||||
}
|
||||
|
@ -226,7 +226,7 @@ function output(side: side) {
|
|||
"encoding/json"
|
||||
|
||||
"golang.org/x/tools/internal/jsonrpc2"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
)
|
||||
`);
|
||||
const a = side.name[0].toUpperCase() + side.name.substring(1)
|
||||
|
|
|
@ -9,7 +9,8 @@ import (
|
|||
|
||||
"golang.org/x/tools/internal/lsp/protocol"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/tag"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -35,7 +36,7 @@ func (s *Server) references(ctx context.Context, params *protocol.ReferenceParam
|
|||
}
|
||||
references, err := ident.References(ctx)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "no references for %s: %v", ident.Name, err)
|
||||
log.Error(ctx, "no references", err, tag.Of("Identifier", ident.Name))
|
||||
}
|
||||
if params.Context.IncludeDeclaration {
|
||||
// The declaration of this identifier may not be in the
|
||||
|
|
|
@ -9,7 +9,8 @@ import (
|
|||
|
||||
"golang.org/x/tools/internal/lsp/protocol"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/tag"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -30,7 +31,7 @@ func (s *Server) signatureHelp(ctx context.Context, params *protocol.TextDocumen
|
|||
}
|
||||
info, err := source.SignatureHelp(ctx, f, rng.Start)
|
||||
if err != nil {
|
||||
xlog.Infof(ctx, "no signature help for %s:%v:%v : %s", uri, int(params.Position.Line), int(params.Position.Character), err)
|
||||
log.Print(ctx, "no signature help", tag.Of("At", rng), tag.Of("Failure", err))
|
||||
return nil, nil
|
||||
}
|
||||
return toProtocolSignatureHelp(info), nil
|
||||
|
|
|
@ -11,7 +11,6 @@ import (
|
|||
"fmt"
|
||||
"go/token"
|
||||
"go/types"
|
||||
"log"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
|
@ -245,12 +244,12 @@ func (act *Action) importObjectFact(obj types.Object, ptr analysis.Fact) bool {
|
|||
// exportObjectFact implements Pass.ExportObjectFact.
|
||||
func (act *Action) exportObjectFact(obj types.Object, fact analysis.Fact) {
|
||||
if act.pass.ExportObjectFact == nil {
|
||||
log.Panicf("%s: Pass.ExportObjectFact(%s, %T) called after Run", act, obj, fact)
|
||||
panic(fmt.Sprintf("%s: Pass.ExportObjectFact(%s, %T) called after Run", act, obj, fact))
|
||||
}
|
||||
|
||||
if obj.Pkg() != act.Pkg.GetTypes() {
|
||||
log.Panicf("internal error: in analysis %s of package %s: Fact.Set(%s, %T): can't set facts on objects belonging another package",
|
||||
act.Analyzer, act.Pkg, obj, fact)
|
||||
panic(fmt.Sprintf("internal error: in analysis %s of package %s: Fact.Set(%s, %T): can't set facts on objects belonging another package",
|
||||
act.Analyzer, act.Pkg, obj, fact))
|
||||
}
|
||||
|
||||
key := objectFactKey{obj, factType(fact)}
|
||||
|
@ -284,7 +283,7 @@ func (act *Action) importPackageFact(pkg *types.Package, ptr analysis.Fact) bool
|
|||
// exportPackageFact implements Pass.ExportPackageFact.
|
||||
func (act *Action) exportPackageFact(fact analysis.Fact) {
|
||||
if act.pass.ExportPackageFact == nil {
|
||||
log.Panicf("%s: Pass.ExportPackageFact(%T) called after Run", act, fact)
|
||||
panic(fmt.Sprintf("%s: Pass.ExportPackageFact(%T) called after Run", act, fact))
|
||||
}
|
||||
|
||||
key := packageFactKey{act.pass.Pkg, factType(fact)}
|
||||
|
@ -294,7 +293,7 @@ func (act *Action) exportPackageFact(fact analysis.Fact) {
|
|||
func factType(fact analysis.Fact) reflect.Type {
|
||||
t := reflect.TypeOf(fact)
|
||||
if t.Kind() != reflect.Ptr {
|
||||
log.Fatalf("invalid Fact type: got %T, want pointer", t)
|
||||
panic(fmt.Sprintf("invalid Fact type: got %T, want pointer", t))
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
|
|
@ -14,7 +14,8 @@ import (
|
|||
"strings"
|
||||
|
||||
"golang.org/x/tools/internal/lsp/snippet"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/tag"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -98,33 +99,33 @@ func (c *completer) item(cand candidate) (CompletionItem, error) {
|
|||
if c.opts.WantDocumentaton {
|
||||
declRange, err := objToRange(c.ctx, c.view.Session().Cache().FileSet(), obj)
|
||||
if err != nil {
|
||||
xlog.Errorf(c.ctx, "failed to get declaration range for object %s: %v", obj.Name(), err)
|
||||
log.Error(c.ctx, "failed to get declaration range for object", err, tag.Of("Name", obj.Name()))
|
||||
goto Return
|
||||
}
|
||||
pos := declRange.FileSet.Position(declRange.Start)
|
||||
if !pos.IsValid() {
|
||||
xlog.Errorf(c.ctx, "invalid declaration position for %v: %v", item.Label, err)
|
||||
log.Error(c.ctx, "invalid declaration position", err, tag.Of("Label", item.Label))
|
||||
goto Return
|
||||
}
|
||||
uri := span.FileURI(pos.Filename)
|
||||
f, err := c.view.GetFile(c.ctx, uri)
|
||||
if err != nil {
|
||||
xlog.Errorf(c.ctx, "unable to get file for %s: %v", uri, err)
|
||||
log.Error(c.ctx, "unable to get file", err, tag.Of("URI", uri))
|
||||
goto Return
|
||||
}
|
||||
gof, ok := f.(GoFile)
|
||||
if !ok {
|
||||
xlog.Errorf(c.ctx, "declaration for %s not in a Go file: %s", item.Label, uri)
|
||||
log.Error(c.ctx, "declaration in a Go file", err, tag.Of("Label", item.Label))
|
||||
goto Return
|
||||
}
|
||||
ident, err := Identifier(c.ctx, c.view, gof, declRange.Start)
|
||||
if err != nil {
|
||||
xlog.Errorf(c.ctx, "no identifier for %s: %v", obj.Name(), err)
|
||||
log.Error(c.ctx, "no identifier", err, tag.Of("Name", obj.Name()))
|
||||
goto Return
|
||||
}
|
||||
documentation, err := ident.Documentation(c.ctx, SynopsisDocumentation)
|
||||
if err != nil {
|
||||
xlog.Errorf(c.ctx, "no documentation for %s: %v", obj.Name(), err)
|
||||
log.Error(c.ctx, "no documentation", err, tag.Of("Name", obj.Name()))
|
||||
goto Return
|
||||
}
|
||||
item.Documentation = documentation
|
||||
|
@ -200,7 +201,7 @@ func formatFieldList(ctx context.Context, v View, list *ast.FieldList) ([]string
|
|||
cfg := printer.Config{Mode: printer.UseSpaces | printer.TabIndent, Tabwidth: 4}
|
||||
b := &bytes.Buffer{}
|
||||
if err := cfg.Fprint(b, v.Session().Cache().FileSet(), p.Type); err != nil {
|
||||
xlog.Errorf(ctx, "unable to print type %v", p.Type)
|
||||
log.Error(ctx, "unable to print type", nil, tag.Of("Type", p.Type))
|
||||
continue
|
||||
}
|
||||
typ := replacer.Replace(b.String())
|
||||
|
|
|
@ -34,7 +34,8 @@ import (
|
|||
"golang.org/x/tools/go/analysis/passes/unsafeptr"
|
||||
"golang.org/x/tools/go/analysis/passes/unusedresult"
|
||||
"golang.org/x/tools/go/packages"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/lsp/telemetry"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -60,6 +61,7 @@ const (
|
|||
)
|
||||
|
||||
func Diagnostics(ctx context.Context, view View, f GoFile, disabledAnalyses map[string]struct{}) (map[span.URI][]Diagnostic, error) {
|
||||
ctx = telemetry.File.With(ctx, f.URI())
|
||||
pkg := f.GetPackage(ctx)
|
||||
if pkg == nil {
|
||||
return singleDiagnostic(f.URI(), "%s is not part of a package", f.URI()), nil
|
||||
|
@ -82,7 +84,7 @@ func Diagnostics(ctx context.Context, view View, f GoFile, disabledAnalyses map[
|
|||
if !diagnostics(ctx, view, pkg, reports) {
|
||||
// If we don't have any list, parse, or type errors, run analyses.
|
||||
if err := analyses(ctx, view, pkg, disabledAnalyses, reports); err != nil {
|
||||
xlog.Errorf(ctx, "failed to run analyses for %s: %v", f.URI(), err)
|
||||
log.Error(ctx, "failed to run analyses", err, telemetry.File)
|
||||
}
|
||||
}
|
||||
// Updates to the diagnostics for this package may need to be propagated.
|
||||
|
@ -230,30 +232,31 @@ func parseDiagnosticMessage(input string) span.Span {
|
|||
|
||||
func pointToSpan(ctx context.Context, view View, spn span.Span) span.Span {
|
||||
f, err := view.GetFile(ctx, spn.URI())
|
||||
ctx = telemetry.File.With(ctx, spn.URI())
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "could not find file for diagnostic: %v", spn.URI())
|
||||
log.Error(ctx, "could not find file for diagnostic", nil, telemetry.File)
|
||||
return spn
|
||||
}
|
||||
diagFile, ok := f.(GoFile)
|
||||
if !ok {
|
||||
xlog.Errorf(ctx, "%s is not a Go file", spn.URI())
|
||||
log.Error(ctx, "not a Go file", nil, telemetry.File)
|
||||
return spn
|
||||
}
|
||||
tok, err := diagFile.GetToken(ctx)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "could not find token.File for %s: %v", spn.URI(), err)
|
||||
log.Error(ctx, "could not find token.File for diagnostic", err, telemetry.File)
|
||||
return spn
|
||||
}
|
||||
data, _, err := diagFile.Handle(ctx).Read(ctx)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "could not find content for diagnostic: %v", spn.URI())
|
||||
log.Error(ctx, "could not find content for diagnostic", err, telemetry.File)
|
||||
return spn
|
||||
}
|
||||
c := span.NewTokenConverter(diagFile.FileSet(), tok)
|
||||
s, err := spn.WithOffset(c)
|
||||
//we just don't bother producing an error if this failed
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "invalid span for diagnostic: %v: %v", spn.URI(), err)
|
||||
log.Error(ctx, "invalid span for diagnostic", err, telemetry.File)
|
||||
return spn
|
||||
}
|
||||
start := s.Start()
|
||||
|
|
|
@ -15,8 +15,8 @@ import (
|
|||
"golang.org/x/tools/go/packages"
|
||||
"golang.org/x/tools/internal/imports"
|
||||
"golang.org/x/tools/internal/lsp/diff"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/trace"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -116,7 +116,7 @@ func computeTextEdits(ctx context.Context, file File, formatted string) (edits [
|
|||
defer done()
|
||||
data, _, err := file.Handle(ctx).Read(ctx)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "Cannot compute text edits: %v", err)
|
||||
log.Error(ctx, "Cannot compute text edits", err)
|
||||
return nil
|
||||
}
|
||||
u := diff.SplitLines(string(data))
|
||||
|
|
|
@ -12,8 +12,9 @@ import (
|
|||
"golang.org/x/tools/internal/jsonrpc2"
|
||||
"golang.org/x/tools/internal/lsp/protocol"
|
||||
"golang.org/x/tools/internal/lsp/source"
|
||||
"golang.org/x/tools/internal/lsp/telemetry"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/log"
|
||||
"golang.org/x/tools/internal/lsp/telemetry/trace"
|
||||
"golang.org/x/tools/internal/lsp/xlog"
|
||||
"golang.org/x/tools/internal/span"
|
||||
)
|
||||
|
||||
|
@ -126,6 +127,7 @@ func (s *Server) didSave(ctx context.Context, params *protocol.DidSaveTextDocume
|
|||
|
||||
func (s *Server) didClose(ctx context.Context, params *protocol.DidCloseTextDocumentParams) error {
|
||||
uri := span.NewURI(params.TextDocument.URI)
|
||||
ctx = telemetry.File.With(ctx, uri)
|
||||
s.session.DidClose(uri)
|
||||
view := s.session.ViewOf(uri)
|
||||
if err := view.SetContent(ctx, uri, nil); err != nil {
|
||||
|
@ -135,7 +137,7 @@ func (s *Server) didClose(ctx context.Context, params *protocol.DidCloseTextDocu
|
|||
defer func() {
|
||||
for _, uri := range clear {
|
||||
if err := s.publishDiagnostics(ctx, view, uri, []source.Diagnostic{}); err != nil {
|
||||
xlog.Errorf(ctx, "failed to clear diagnostics for %s: %v", uri, err)
|
||||
log.Error(ctx, "failed to clear diagnostics", err, telemetry.File)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
@ -143,18 +145,18 @@ func (s *Server) didClose(ctx context.Context, params *protocol.DidCloseTextDocu
|
|||
// clear out all diagnostics for the package.
|
||||
f, err := view.GetFile(ctx, uri)
|
||||
if err != nil {
|
||||
xlog.Errorf(ctx, "no file for %s: %v", uri, err)
|
||||
log.Error(ctx, "no file for %s: %v", err, telemetry.File)
|
||||
return nil
|
||||
}
|
||||
// For non-Go files, don't return any diagnostics.
|
||||
gof, ok := f.(source.GoFile)
|
||||
if !ok {
|
||||
xlog.Errorf(ctx, "closing a non-Go file, no diagnostics to clear")
|
||||
log.Error(ctx, "closing a non-Go file, no diagnostics to clear", nil, telemetry.File)
|
||||
return nil
|
||||
}
|
||||
pkg := gof.GetPackage(ctx)
|
||||
if pkg == nil {
|
||||
xlog.Errorf(ctx, "no package available for %s", uri)
|
||||
log.Error(ctx, "no package available", nil, telemetry.File)
|
||||
return nil
|
||||
}
|
||||
for _, filename := range pkg.GetFilenames() {
|
||||
|
|
Loading…
Reference in New Issue