go/internal/lsp/source
Robert Findley 01c9ff0536 internal/lsp/cache: invalid packages should not be workspace packages
To support the experimentalUseInvalidMetadata mode, we keep around
invalid metadata. This can help gopls features work when, for example,
the go.mod file is broken. It is debatable whether this feature is worth
supporting (see golang/go#54180), but in the meantime there is a very
negative side-effect when module paths are changed in the go.mod file:
we keep around a bunch of workspace packages with a stale module path.
As a result we can be left with a lots of extra type-checked packages
in memory, and many inaccurate diagnostics.

Fix this by skipping packages with invalid metadata when computing
workspace packages. While we may want to use invalid metadata when
finding the best package for a file, it does not make sense to re-
type-check and diagnose all those stale packages.

Fixes golang/go#43186

Change-Id: Id73b47ea138ec80a9de63b03dae41d4e509b8d5a
Reviewed-on: https://go-review.googlesource.com/c/tools/+/420956
Run-TryBot: Robert Findley <rfindley@google.com>
Reviewed-by: Suzy Mueller <suzmue@golang.org>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2022-08-04 18:51:19 +00:00
..
completion internal/lsp/cache: move PosTo{Decl,Field} out of cache 2022-07-13 14:49:57 +00:00
add_import.go internal/lsp: add list_known_packages and add_import commands 2021-05-23 03:57:00 +00:00
api_json.go internal/lsp: new options to disable certain kinds of semantic tokens 2022-08-04 18:30:35 +00:00
call_hierarchy.go internal/span: make NewRange accept File, not FileSet 2022-07-06 19:40:50 +00:00
code_lens.go internal/lsp/source: don't crash requesting gc_details for an empty file 2022-08-02 18:19:01 +00:00
comment.go gopls, internal/lsp: gofmt 2022-04-12 17:41:31 +00:00
comment_test.go internal/lsp/source: refactor commentToMarkdown function 2021-05-19 23:19:09 +00:00
diagnostics.go internal/lsp: remove unused code 2022-03-17 13:53:41 +00:00
extract.go internal/span: make NewRange accept File, not FileSet 2022-07-06 19:40:50 +00:00
fix.go internal/span: make NewRange accept File, not FileSet 2022-07-06 19:40:50 +00:00
folding_range.go internal/span: make NewRange accept File, not FileSet 2022-07-06 19:40:50 +00:00
format.go internal/span: eliminate TokenConverter 2022-06-01 19:19:15 +00:00
format_test.go internal/lsp: use source.Offset instead of tok.Offset 2021-10-12 22:12:04 +00:00
gc_annotations.go internal/lsp: key GC details off package ID 2021-03-02 22:01:38 +00:00
highlight.go internal/lsp/source: eliminate ColumnMapper.PointSpan in favor of Pos 2022-06-01 19:19:59 +00:00
hover.go internal/lsp/cache: move PosTo{Decl,Field} out of cache 2022-07-13 14:49:57 +00:00
identifier.go internal/lsp/cache: move PosTo{Decl,Field} out of cache 2022-07-13 14:49:57 +00:00
identifier_test.go internal/span: eliminate TokenConverter 2022-06-01 19:19:15 +00:00
implementation.go internal/lsp/source: use token.File-agnostic positions to dedupe refs 2022-07-12 14:39:04 +00:00
inlay_hint.go internal/lsp: suppress parameter hint when argument matches parameter 2022-07-26 18:43:08 +00:00
known_packages.go gopls: remove usage of golang.org/x/xerrors 2022-04-20 15:33:22 +00:00
options.go internal/lsp: new options to disable certain kinds of semantic tokens 2022-08-04 18:30:35 +00:00
options_test.go gopls: upgrade staticcheck to v0.3.0 2022-04-07 14:59:24 +00:00
references.go internal/lsp: Refactor to share logic with rename 2022-07-25 19:36:27 +00:00
rename.go internal/lsp: rename all the package names in the renamed package 2022-08-01 17:28:00 +00:00
rename_check.go internal/span: make NewRange accept File, not FileSet 2022-07-06 19:40:50 +00:00
signature_help.go internal/lsp/cache: move PosTo{Decl,Field} out of cache 2022-07-13 14:49:57 +00:00
source_test.go internal/lsp/regtest: allow sharing memoized results across regtests 2022-07-26 21:20:42 +00:00
stub.go internal: remove unneeded FileSets 2022-06-06 20:47:10 +00:00
symbols.go gopls: remove usage of golang.org/x/xerrors 2022-04-20 15:33:22 +00:00
types_format.go internal/lsp/cache: move PosTo{Decl,Field} out of cache 2022-07-13 14:49:57 +00:00
util.go internal/lsp/cache: invalid packages should not be workspace packages 2022-08-04 18:51:19 +00:00
util_test.go internal/span: make NewRange accept File, not FileSet 2022-07-06 19:40:50 +00:00
view.go internal/lsp/cache: report a critical error when go.work is invalid 2022-07-27 18:59:40 +00:00
workspace_symbol.go internal/lsp: use directoryFilters in import scanning 2022-08-04 15:50:11 +00:00
workspace_symbol_test.go internal/lsp: use directoryFilters in import scanning 2022-08-04 15:50:11 +00:00