Documentation
¶
Overview ¶
Package cache implements the caching layer for gopls.
Index ¶
- Variables
- type Cache
- func (c *Cache) FileSet() *token.FileSet
- func (c *Cache) GetFile(ctx context.Context, uri span.URI) (source.FileHandle, error)
- func (c *Cache) ID() string
- func (c *Cache) MemStats() map[reflect.Type]int
- func (c *Cache) NewSession(ctx context.Context) *Session
- func (c *Cache) PackageStats(withNames bool) template.HTML
- type KnownMetadata
- type Metadata
- type PackageID
- type PackageName
- type PackagePath
- type Session
- func (s *Session) Cache() interface{}
- func (s *Session) DidModifyFiles(ctx context.Context, changes []source.FileModification) (map[source.Snapshot][]span.URI, func(), error)
- func (s *Session) ExpandModificationsToDirectories(ctx context.Context, changes []source.FileModification) []source.FileModification
- func (s *Session) FileWatchingGlobPatterns(ctx context.Context) map[string]struct{}
- func (s *Session) GetFile(ctx context.Context, uri span.URI) (source.FileHandle, error)
- func (s *Session) ID() string
- func (s *Session) ModifyFiles(ctx context.Context, changes []source.FileModification) error
- func (s *Session) NewView(ctx context.Context, name string, folder span.URI, options *source.Options) (source.View, source.Snapshot, func(), error)
- func (s *Session) Options() *source.Options
- func (s *Session) Overlays() []source.Overlay
- func (s *Session) SetOptions(options *source.Options)
- func (s *Session) SetProgressTracker(tracker *progress.Tracker)
- func (s *Session) Shutdown(ctx context.Context)
- func (s *Session) String() string
- func (s *Session) View(name string) source.View
- func (s *Session) ViewOf(uri span.URI) (source.View, error)
- func (s *Session) Views() []source.View
- type SessionKey
- type View
- func (v *View) FileKind(fh source.FileHandle) source.FileKind
- func (v *View) Folder() span.URI
- func (v *View) ID() string
- func (v *View) IsGoPrivatePath(target string) bool
- func (v *View) ModuleUpgrades() map[string]string
- func (v *View) Name() string
- func (v *View) Options() *source.Options
- func (v *View) Rebuild(ctx context.Context) (source.Snapshot, func(), error)
- func (v *View) RegisterModuleUpgrades(upgrades map[string]string)
- func (v *View) Session() *Session
- func (v *View) SetOptions(ctx context.Context, options *source.Options) (source.View, error)
- func (v *View) Shutdown(ctx context.Context)
- func (v *View) Snapshot(ctx context.Context) (source.Snapshot, func())
Constants ¶
This section is empty.
Variables ¶
var ( KeyCreateSession = NewSessionKey("create_session", "A new session was added") KeyUpdateSession = NewSessionKey("update_session", "Updated information about a session") KeyShutdownSession = NewSessionKey("shutdown_session", "A session was shut down") )
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache struct {
// contains filtered or unexported fields
}
func New ¶
New Creates a new cache for gopls operation results, using the given file set, shared store, and session options.
All of the fset, store and options may be nil, but if store is non-nil so must be fset (and they must always be used together), otherwise it may be possible to get cached data referencing token.Pos values not mapped by the FileSet.
type KnownMetadata ¶ added in v0.1.6
type KnownMetadata struct { *Metadata // Valid is true if the given metadata is Valid. // Invalid metadata can still be used if a metadata reload fails. Valid bool // PkgFilesChanged reports whether the file set of this metadata has // potentially changed. // // TODO(rfindley): this is used for WorkspacePackages, and looks fishy: we // should probably only consider valid packages to be workspace packages. PkgFilesChanged bool }
KnownMetadata is a wrapper around metadata that tracks its validity.
type Metadata ¶ added in v0.1.6
type Metadata struct { ID PackageID PkgPath PackagePath Name PackageName GoFiles []span.URI CompiledGoFiles []span.URI ForTest PackagePath // package path under test, or "" TypesSizes types.Sizes Errors []packages.Error Deps []PackageID // direct dependencies, in string order MissingDeps map[PackagePath]struct{} Module *packages.Module // Config is the *packages.Config associated with the loaded package. Config *packages.Config // IsIntermediateTestVariant reports whether the given package is an // intermediate test variant, e.g. // "golang.org/x/tools/internal/lsp/cache [golang.org/x/tools/internal/lsp/source.test]". // // Such test variants arise when an x_test package (in this case source_test) // imports a package (in this case cache) that itself imports the the // non-x_test package (in this case source). // // This is done so that the forward transitive closure of source_test has // only one package for the "golang.org/x/tools/internal/lsp/source" import. // The intermediate test variant exists to hold the test variant import: // // golang.org/x/tools/internal/lsp/source_test [golang.org/x/tools/internal/lsp/source.test] // | "golang.org/x/tools/internal/lsp/cache" -> golang.org/x/tools/internal/lsp/cache [golang.org/x/tools/internal/lsp/source.test] // | "golang.org/x/tools/internal/lsp/source" -> golang.org/x/tools/internal/lsp/source [golang.org/x/tools/internal/lsp/source.test] // | ... // // golang.org/x/tools/internal/lsp/cache [golang.org/x/tools/internal/lsp/source.test] // | "golang.org/x/tools/internal/lsp/source" -> golang.org/x/tools/internal/lsp/source [golang.org/x/tools/internal/lsp/source.test] // | ... // // We filter these variants out in certain places. For example, there is // generally no reason to run diagnostics or analysis on them. // // TODO(rfindley): this can probably just be a method, since it is derived // from other fields. IsIntermediateTestVariant bool // contains filtered or unexported fields }
Metadata holds package Metadata extracted from a call to packages.Load.
func (*Metadata) ModuleInfo ¶ added in v0.1.10
ModuleInfo implements the source.Metadata interface.
func (*Metadata) PackageName ¶ added in v0.1.6
Name implements the source.Metadata interface.
func (*Metadata) PackagePath ¶ added in v0.1.6
PkgPath implements the source.Metadata interface.
type PackageID ¶ added in v0.1.6
type PackageID string
Declare explicit types for package paths, names, and IDs to ensure that we never use an ID where a path belongs, and vice versa. If we confused these, it would result in confusing errors because package IDs often look like package paths.
type PackageName ¶ added in v0.1.6
type PackageName string
Declare explicit types for package paths, names, and IDs to ensure that we never use an ID where a path belongs, and vice versa. If we confused these, it would result in confusing errors because package IDs often look like package paths.
type PackagePath ¶ added in v0.1.6
type PackagePath string
Declare explicit types for package paths, names, and IDs to ensure that we never use an ID where a path belongs, and vice versa. If we confused these, it would result in confusing errors because package IDs often look like package paths.
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
func (*Session) DidModifyFiles ¶
func (*Session) ExpandModificationsToDirectories ¶
func (s *Session) ExpandModificationsToDirectories(ctx context.Context, changes []source.FileModification) []source.FileModification
func (*Session) FileWatchingGlobPatterns ¶
func (*Session) ModifyFiles ¶
func (*Session) SetOptions ¶
func (*Session) SetProgressTracker ¶ added in v0.1.4
type SessionKey ¶
type SessionKey struct {
// contains filtered or unexported fields
}
SessionKey represents an event label key that has a *Session value.
func NewSessionKey ¶
func NewSessionKey(name, description string) *SessionKey
NewSessionKey creates a new Key for *Session values.
func (*SessionKey) Description ¶
func (k *SessionKey) Description() string
func (*SessionKey) From ¶
func (k *SessionKey) From(t label.Label) *Session
From can be used to get the session value from a Label.
func (*SessionKey) Get ¶
func (k *SessionKey) Get(lm label.Map) *Session
Get can be used to get the session for the key from a label.Map.
func (*SessionKey) Name ¶
func (k *SessionKey) Name() string
type View ¶
type View struct {
// contains filtered or unexported fields
}
func (*View) FileKind ¶ added in v0.1.9
func (v *View) FileKind(fh source.FileHandle) source.FileKind