mirror of
https://github.com/golang/go.git
synced 2025-05-05 15:43:04 +00:00
Also use it for errors that were otherwise silently dropped This makes it much easier to debug problems. Also added command line control over whether the rpc trace messages are printed, which allows you to read the log, otherwise the file edit messages swamp the log. Change-Id: I7b70fd18034a87b2964e6d6d5f6f33dcaf7d8ea8 Reviewed-on: https://go-review.googlesource.com/c/tools/+/170178 Reviewed-by: Rebecca Stambler <rstambler@golang.org>
61 lines
1.9 KiB
Go
61 lines
1.9 KiB
Go
// Copyright 2018 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 source
|
|
|
|
import (
|
|
"context"
|
|
"go/ast"
|
|
"go/token"
|
|
"go/types"
|
|
|
|
"golang.org/x/tools/go/analysis"
|
|
"golang.org/x/tools/go/packages"
|
|
"golang.org/x/tools/internal/lsp/xlog"
|
|
"golang.org/x/tools/internal/span"
|
|
)
|
|
|
|
// View abstracts the underlying architecture of the package using the source
|
|
// package. The view provides access to files and their contents, so the source
|
|
// package does not directly access the file system.
|
|
type View interface {
|
|
Logger() xlog.Logger
|
|
GetFile(ctx context.Context, uri span.URI) (File, error)
|
|
SetContent(ctx context.Context, uri span.URI, content []byte) error
|
|
FileSet() *token.FileSet
|
|
}
|
|
|
|
// File represents a Go source file that has been type-checked. It is the input
|
|
// to most of the exported functions in this package, as it wraps up the
|
|
// building blocks for most queries. Users of the source package can abstract
|
|
// the loading of packages into their own caching systems.
|
|
type File interface {
|
|
URI() span.URI
|
|
GetAST(ctx context.Context) *ast.File
|
|
GetFileSet(ctx context.Context) *token.FileSet
|
|
GetPackage(ctx context.Context) Package
|
|
GetToken(ctx context.Context) *token.File
|
|
GetContent(ctx context.Context) []byte
|
|
}
|
|
|
|
// Package represents a Go package that has been type-checked. It maintains
|
|
// only the relevant fields of a *go/packages.Package.
|
|
type Package interface {
|
|
GetFilenames() []string
|
|
GetSyntax() []*ast.File
|
|
GetErrors() []packages.Error
|
|
GetTypes() *types.Package
|
|
GetTypesInfo() *types.Info
|
|
GetTypesSizes() types.Sizes
|
|
IsIllTyped() bool
|
|
GetActionGraph(ctx context.Context, a *analysis.Analyzer) (*Action, error)
|
|
}
|
|
|
|
// TextEdit represents a change to a section of a document.
|
|
// The text within the specified span should be replaced by the supplied new text.
|
|
type TextEdit struct {
|
|
Span span.Span
|
|
NewText string
|
|
}
|