Commit Graph

17 Commits

Author SHA1 Message Date
Suzy Mueller a4274a8a0e gopls: add diagnostics for non-stdlib vulnerabilities
Show the vulnerabilities found by the runvulncheck codelens in the
go.mod file using diagnostics. This uses a similar strategy to
upgrade codelenses to store the vulnerabilities in the view so the
diagnostics can be calculated at a later time.

Change-Id: Ie9744712d9a7f8d78cbe3b54aa4cd3a380a304bc
Reviewed-on: https://go-review.googlesource.com/c/tools/+/433537
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Suzy Mueller <suzmue@golang.org>
2022-09-28 19:25:30 +00:00
Robert Findley 9c63911fcf gopls/internal/lsp: delete dead code
Delete some gopls code that is no longer used.

Change-Id: Ib211b01b6c2ac8a03700b1e47d32ac69fccd1b83
Reviewed-on: https://go-review.googlesource.com/c/tools/+/435360
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
2022-09-28 18:44:21 +00:00
Robert Findley ae737bc619 gopls/internal/lsp: remove the source.Session interface
The source.Session interface is not needed: the source package should
never need to know about sessions. Remove it in favor of the concrete
*cache.Session type.

Change-Id: I220a1fb1525c57f9fa2a4a4f80152c31a81565ff
Reviewed-on: https://go-review.googlesource.com/c/tools/+/435359
Run-TryBot: Robert Findley <rfindley@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
2022-09-28 18:40:03 +00:00
Robert Findley bddb3720ba gopls: deprecate three experimental features
Deprecate the following features, which never made it out of
experimental:
- experimentalWorkspaceModule (golang/go#52897)
- experimentalWatchedFileDelay (golang/go#55268)
- experimentalUseInvalidMetadata (golang/go#54180)

See the associated issues for rationale behind the deprecations.

With this change, any users configuring these settings will get a
ShowMessageRequest warning them of the deprecation.

Fixes golang/go#52897
Fixes golang/go#55268
Fixes golang/go#54180

Change-Id: I49f178e68793df4e4f9edb63e9b03cad127c5f51
Reviewed-on: https://go-review.googlesource.com/c/tools/+/434640
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
2022-09-28 16:54:30 +00:00
Robert Findley 10e9d3cefa gopls/internal/lsp: tolerate new 'imported and not used' error message
Tolerate the new form of the "... imported but not used" error message,
to allow landing this change in go/types.

Along the way, improve the test output when comparing diagnostics, and
formatting results.

For golang/go#54845

Change-Id: I998d539f82e0f70c85bdb4c40858be5e01dd08b6
Reviewed-on: https://go-review.googlesource.com/c/tools/+/435355
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Robert Findley <rfindley@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
Auto-Submit: Robert Findley <rfindley@google.com>
2022-09-27 19:33:44 +00:00
Robert Findley c7ac94217f gopls/internal/lsp: simplify prepareRename tests
- simplify collection to use an expected span.Span and use mustRange
- remove the source_test.go version of the test, as it is redundant

For golang/go#54845

Change-Id: I3a7da8547e27dc157fb513486a151031ec135746
Reviewed-on: https://go-review.googlesource.com/c/tools/+/432138
gopls-CI: kokoro <noreply+kokoro@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2022-09-23 13:51:34 +00:00
Robert Findley b9adce94b7 internal/lsp/source: derive document symbols from syntax alone
The documentSymbols handler joined syntax information with type
information, meaning that it was only able to satisfy requests for files
in valid workspace packages. However, the value added by type
information was limited, and in many cases could be derived from syntax
alone. For example, while generating symbols for a const declaration, we
don't need the type checker to tell us that the symbol kind is const.

Refactor the documentSymbols handler to derive symbols from syntax
alone. This leads to some simplifications from the code, in addition to
eliminating the dependency on package data. Also, simplify symbol
details to just use types.ExprString, which includes some missing
information such as function return values. Also, update handling to
support Go 1.18 type embedding in interfaces.

Notably, this reverts decisions like golang/go#31202, in which we went to
effort to make the symbol kind more accurate. In my opinion (and the
opinion expressed in golang/go#52797), the cost of requiring type
information is not worth the minor improvement in accuracy of the symbol
kind, which (as far as I know) is only used for UI elements.

To facilitate testing (and start to clean up the test framework), make
several simplifications / improvements to the marker tests:
- simplify the collection of symbol data
- eliminate unused marks
- just use cmp.Diff for comparing results
- allow for arbitrary nesting of symbols.
- remove unnecessary @symbol annotations from workspace_symbol tests --
  their data is not used by workspace_symbol handlers
- remove Symbol and WorkspaceSymbol handlers from source_test.go. On
  inspection, these handlers were redundant with lsp_test.go.
Notably, the collection and assembly of @symbol annotations is still way
too complicated. It would be much simpler to just have a single golden
file summarizing the entire output, rather than weaving it together from
annotations. However, I realized this too late, and so it will have to
wait for a separate CL.

Fixes golang/go#52797
Fixes golang/vscode-go#2242
Updates golang/go#54845

Change-Id: I3a2c2d39f59f9d045a6cedf8023ff0c80a69d974
Reviewed-on: https://go-review.googlesource.com/c/tools/+/405254
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
Run-TryBot: Robert Findley <rfindley@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2022-09-23 13:51:08 +00:00
Suzy Mueller 2f04713366 gopls: fix out of bounds bug in extract
There was a bug where the code would try to access an out of bounds
index when trimming extra space and comments in extract. This change
also adds a regtest for extract.

Fixes golang/go#55271

Change-Id: I7da716a6a68a9678011abf15def47acdea0b33fe
Reviewed-on: https://go-review.googlesource.com/c/tools/+/432135
Run-TryBot: Suzy Mueller <suzmue@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
gopls-CI: kokoro <noreply+kokoro@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
2022-09-21 16:48:39 +00:00
Robert Findley 81a42f0a4f gopls/internal/lsp/tests: pass in a *testing.T to Data.Golden
Data.Golden is called from subtests: use the *testing.T from the caller,
so that we can get a more meaningful failure.

For golang/go#54845

Change-Id: I136df0c6a7a11bcf364b78ecac42ba2b51a15bb0
Reviewed-on: https://go-review.googlesource.com/c/tools/+/431844
Reviewed-by: Alan Donovan <adonovan@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2022-09-21 12:54:23 +00:00
Robert Findley 14462efca9 go/analysis/passes/loopclosure: experiment with checking t.Run+Parallel
Add experimental new logic to the loopclosure analyzer that checks for
access to loop variables from parallel subtests. For now, this is gated
behind an internal variable so that we may experiment with it without
yet affecting cmd/vet.

Add an internal/loopclosure command that enables the experimental new
check.

Change-Id: Ibf7e388a58a2b3e712e66e095d06612cf3ea918c
Reviewed-on: https://go-review.googlesource.com/c/tools/+/430916
Reviewed-by: David Chase <drchase@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Robert Findley <rfindley@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2022-09-20 22:09:32 +00:00
Alan Donovan 6782af031e gopls/internal/lsp/source: clarify qualifiedObject
Clarify documentation around qualifiedObject and
its field invariants.
(Initially I tried to delete it but it's not so easy.)

Also, hoist KnownPackages et al outside of loop over
qualifiedIdentifiers in implementations() to avoid unnecessary
recomputation.

Change-Id: Idf087634b918a2277eabf8bbab2fdf49a8fc946c
Reviewed-on: https://go-review.googlesource.com/c/tools/+/431839
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Alan Donovan <adonovan@google.com>
2022-09-20 16:27:24 +00:00
Suzy Mueller fdf581fdab internal/lsp: allow extract func ranges to begin/end with comments
CanExtract strips of the whitespace on either end of the range in
order to get an exact range to extract to function. We can do the
same thing for comments by moving adjusting the range if the start
or end positions contain the position.

Updates golang/go#37170
Fixes golang/go#54816

Change-Id: I3508c822434400f084a273730380c89611803e97
Reviewed-on: https://go-review.googlesource.com/c/tools/+/351989
Reviewed-by: Robert Findley <rfindley@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
Run-TryBot: Suzy Mueller <suzmue@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
2022-09-19 18:18:22 +00:00
Robert Findley ec743893cd gopls/internal/lsp/source: make "chatty" diagnostics the default
This CL changes the default behavior of gopls to always publish
diagnostics for new file versions. In practice, this avoids stale
diagnostics in multiple LSP clients (golang/go#54983 has more details).

After this change, TestDownloadDeps was failing because it asserted on
the non-existence of published diagnostics. Update the test to treat an
empty diagnostic set the same as an unreceived diagnostic set.

Fixes golang/go#54983

Change-Id: I41ed2f859b748e14585e7feb53702d3f38dcd599
Reviewed-on: https://go-review.googlesource.com/c/tools/+/429935
Run-TryBot: Robert Findley <rfindley@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
2022-09-12 18:14:22 +00:00
Suzy Mueller 7e129ca5ef gopls: add codelens to reset upgrade diagnostics
This clears the diagnostics that were added by the `Check for
upgrades` codelens for the given go.mod file. The diagnostic
source for the diagnostics from `Check for upgrades` is now
modCheckUpgradesSource instead of modSource in order to allow
us to easily clear these diagnostics.

Fixes golang/go#54065

Change-Id: I7c0824ce1fdfcf2a73ec83342501ceed82fc519f
Reviewed-on: https://go-review.googlesource.com/c/tools/+/426016
Reviewed-by: Alan Donovan <adonovan@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Suzy Mueller <suzmue@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
2022-09-12 15:41:56 +00:00
Hana (Hyang-Ah) Kim a8b9ed3e93 gopls/internal/lsp/source: remove Govulncheck from Hooks
Now lsp packages are moved to the gopls module where the vulncheck
implementation exists. We no longer need to inject govulncheck
through the hook.

Change-Id: Ia627f1abe4c626d254d3e72b778535d6cb1ab41e
Reviewed-on: https://go-review.googlesource.com/c/tools/+/429938
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
2022-09-12 13:57:24 +00:00
Robert Findley 3ee171058f gopls/doc: update stale documentation and improve link names
Following up on comments from CL 428595 and CL 426796, improve links to
'here', and update a stale comment on gopls' code location.

Updates golang/go#54509

Change-Id: Ie0e04b01b6e7193294fb9c39a809cee1a5b981c5
Reviewed-on: https://go-review.googlesource.com/c/tools/+/429215
Reviewed-by: Alan Donovan <adonovan@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Robert Findley <rfindley@google.com>
2022-09-07 18:17:13 +00:00
Robert Findley b15dac2b88 gopls: migrate internal/lsp to gopls/internal/lsp
This CL was created using the following commands:

    ./gopls/internal/migrate.sh
    git add .
    git codereview gofmt

For golang/go#54509

Change-Id: Iceeec602748a5e6f609c3ceda8d19157e5c94009
Reviewed-on: https://go-review.googlesource.com/c/tools/+/426796
gopls-CI: kokoro <noreply+kokoro@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
Reviewed-by: Peter Weinberger <pjw@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2022-09-07 16:44:44 +00:00