go/go
Heschi Kreinick eb48d3f608 internal/lsp/cache: refactor diagnostic suppression
In typeCheckDiagnostics, we have logic to suppress go list and type
checking errors based on the presence of other errors. Nobody seems to
know why the logic is exactly what it is, and suppressing list errors
means that bad //go:embed patterns don't show up.

Intuitively, it makes sense to me that we don't want to type check if
listing or parsing fails: list errors mean that whole files may be
missing, and parsing errors may wipe out arbitrary chunks of files.
There's little point reporting errors from type checking that. However,
list errors and parse errors should be mostly orthogonal: go list
parses very little of the file and in practice only reports errors
parsing the package statement. So, at least for now, we report both
parse and list errors, and stop there if there are any.

Finally, move the suppression logic to the actual typeCheck function
that generates the diagnostics. typeCheckDiagnostics is the primary
consumer, but I think it's better to do the suppression at the source.

Because we are now showing list errors, and they are prone to getting
stuck due to bad overlay support, a couple of tests now require 1.16.

Change-Id: I7801e44c4d3da30bda61e0c1710a2f52de6215f5
Reviewed-on: https://go-review.googlesource.com/c/tools/+/295414
Trust: Heschi Kreinick <heschi@google.com>
Run-TryBot: Heschi Kreinick <heschi@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2021-03-02 01:39:17 +00:00
..
analysis all: go fmt ./... 2021-02-20 03:28:52 +00:00
ast all: add copyright notices to files that are missing them 2021-01-06 17:23:47 +00:00
buildutil all: go fmt ./... 2021-02-20 03:28:52 +00:00
callgraph all: go fmt ./... 2021-02-20 03:28:52 +00:00
cfg all: fix some staticcheck errors 2020-01-29 04:53:41 +00:00
expect go/expect: use parser.AllErrors when extracting Notes 2021-02-23 18:29:07 +00:00
gccgoexportdata all: add copyright notices to files that are missing them 2021-01-06 17:23:47 +00:00
gcexportdata all: go fmt ./... 2021-02-20 03:28:52 +00:00
internal all: go fmt ./... 2021-02-20 03:28:52 +00:00
loader all: go fmt ./... 2021-02-20 03:28:52 +00:00
packages internal/lsp/cache: refactor diagnostic suppression 2021-03-02 01:39:17 +00:00
pointer all: go fmt ./... 2021-02-20 03:28:52 +00:00
ssa all: go fmt ./... 2021-02-20 03:28:52 +00:00
types all: add copyright notices to files that are missing them 2021-01-06 17:23:47 +00:00
vcs all: replace all usages of os/exec with golang.org/x/sys/execabs 2021-01-19 22:25:03 +00:00