| // 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/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 { |
| 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 |
| 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 |
| } |