go/internal/lsp/cache
Heschi Kreinick d2fffb4b84 internal/imports: cache things outside the mod cache
Since a user's module cache is generally going to be much bigger than
their main module, one would expect that caching just information about
the module cache would be sufficient. It turns out that's not correct.
When we discover something in the module cache, we have to make sure
that a different version of it isn't already in scope. Doing that can
require information about the main module or replace targets, so that
needs to be cached too.

Concretely, when I'm working in x/tools, if a scan discovers a version
of x/tools in the module cache, it should usually ignore that version.
But that might not be true in more complicated cases, especially those
involving nested modules whose boundaries change.

So, cache everything except GOROOT. Since the new data is mutable,
we store it separately from the module cache data so that it can be
discarded easily between runs.

Change-Id: I47364f6c0270fee03af8898fec6c85d1b9c8d780
Reviewed-on: https://go-review.googlesource.com/c/tools/+/202045
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2019-10-21 20:45:41 +00:00
..
analysis.go internal/lsp: add a test to make sure we handle bad imports 2019-10-17 20:52:05 +00:00
builtin.go internal/lsp: address staticcheck warnings 2019-10-04 02:16:23 +00:00
cache.go internal/lsp: use options hooks to install diff driver 2019-10-11 16:38:31 +00:00
check.go internal/lsp: refactor error handling code in type-checking 2019-10-21 18:57:46 +00:00
error_test.go internal/lsp: refactor error handling code in type-checking 2019-10-21 18:57:46 +00:00
errors.go internal/lsp: refactor error handling code in type-checking 2019-10-21 18:57:46 +00:00
external.go internal/lsp: address staticcheck warnings 2019-10-04 02:16:23 +00:00
file.go internal/lsp: rework snapshots and cache FileHandles per-snapshot 2019-10-01 16:26:22 +00:00
gofile.go internal/lsp: return an error from {Narrowest,Widest}CheckPackageHandle 2019-10-11 16:51:06 +00:00
load.go internal/lsp: check if the go/packages context has been canceled 2019-10-16 22:21:47 +00:00
parse.go internal/lsp: fix bad *ast.ArrayTypes for completion 2019-10-17 20:53:01 +00:00
pkg.go internal/lsp: refactor error handling code in type-checking 2019-10-21 18:57:46 +00:00
session.go internal/lsp: add analyses to the snapshot 2019-10-15 15:04:14 +00:00
snapshot.go internal/lsp: use the analyzer's pointer instead of name 2019-10-15 21:12:01 +00:00
view.go internal/imports: cache things outside the mod cache 2019-10-21 20:45:41 +00:00
watcher.go internal/lsp: fix deadlocks loading lots of files at once 2019-07-03 17:22:52 +00:00