mirror of
https://github.com/golang/go
synced 2024-11-19 03:44:40 -07:00
02d0efc0fb
This adds support for the LSP implemention call, based on the guru code for getting implementations. The guru code did much more than we need, so some of the code has been dropped, and other parts of it are ignored (for now). Fixes golang/go#32973 Change-Id: I1a24450e17d5364f25c4b4120be5320b13ac822b Reviewed-on: https://go-review.googlesource.com/c/tools/+/203918 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
25 lines
654 B
Go
25 lines
654 B
Go
// Copyright 2019 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package lsp
|
|
|
|
import (
|
|
"context"
|
|
|
|
"golang.org/x/tools/internal/lsp/protocol"
|
|
"golang.org/x/tools/internal/lsp/source"
|
|
"golang.org/x/tools/internal/span"
|
|
)
|
|
|
|
func (s *Server) implementation(ctx context.Context, params *protocol.ImplementationParams) ([]protocol.Location, error) {
|
|
uri := span.NewURI(params.TextDocument.URI)
|
|
view := s.session.ViewOf(uri)
|
|
f, err := view.GetFile(ctx, uri)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return source.Implementation(ctx, view, f, params.Position)
|
|
}
|