Граф коммитов

8805 Коммитов

Автор SHA1 Сообщение Дата
Alan Donovan 752860b84e gopls/internal/protocol/command: simplify ApplyFix
- combine URI + Range into one Location field
- factor n calls addCommand(NewApplyFixCommand).

Change-Id: I01c4ff7efeaa577331253348f4816a3a82b80db0
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614157
Commit-Queue: Alan Donovan <adonovan@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-23 18:23:46 +00:00
Alan Donovan fadcea546d gopls/internal/golang: CodeAction: split into producers
This CL splits the ad hoc CodeAction function and its
many callees into a uniform list of "producer" functions,
each responsible for a single CodeActionKind.

Each producer is called only if its kind is enabled
by the request, and any actions created by the producer
automatically have the appropriate kind.

Only producers that request type information will get it.

To avoid redundant computation when two producers need
the same information, the lazyInit mechanism allows
them to share common results, similar to sync.Once.
For example, quickFix and sourceOrganizeImports share
the results of a call to allImportsFixes.

Change-Id: I4034970ed9b1e872d5c9bf4b085b98a121fa7144
Reviewed-on: https://go-review.googlesource.com/c/tools/+/612495
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Findley <rfindley@google.com>
2024-09-23 18:23:05 +00:00
xieyuschen f70550d233 go/ssa: migrate some tests in build_test.go away from loader
For golang/go#69556

Change-Id: I9146de749112d046b9d27f012d2de25f9ff86382
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614955
Reviewed-by: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
Reviewed-by: David Chase <drchase@google.com>
2024-09-23 18:11:16 +00:00
Alan Donovan 01bd772bc3 go/callgraph: rewrite tests to use go/packages not go/loader
The cha_test.loadPackages function has moved to testfiles.LoadPackages.

Updates golang/go#69556

Change-Id: I5b1657388cb4d6ca435d1ab3a7cbf9cd264a0e7b
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614679
Reviewed-by: Tim King <taking@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
2024-09-22 20:55:56 +00:00
Alan Donovan f8ce005215 go/types/objectpath: use go/packages instead of go/loader in tests
This breaks another dependency on the deprecated loader package.

Updates golang/go#69556

Change-Id: Ia631b6ca443416d7bcf548ced18829f09cadc7d5
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614678
Reviewed-by: Tim King <taking@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
2024-09-22 20:55:54 +00:00
Alan Donovan d2c1642d14 internal/gcimporter: rewrite TestIExportData_stdlib using go/packages
This breaks a dependency on the deprecated go/loader,
and removes a bunch of legacy cruft.

Updates golang/go#69556

Change-Id: I13e1b249db761bd0604881233116ca2a6c9c9904
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614676
Auto-Submit: Alan Donovan <adonovan@google.com>
Reviewed-by: Tim King <taking@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-22 20:55:51 +00:00
Tim King af67b9d481 go/ssa: migrate source_test.go away from loader
Also changes buildPackage to return a *packages.Package.
buildPackage no longer builds dependencies.

For golang/go#69556

Change-Id: Id10ccee131394cda657213124907949a0b82f903
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614116
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2024-09-20 21:39:50 +00:00
Alan Donovan 3bb0ed7baa x/tools: assume go1.22 and simplify
This CL does not include simplifications to gopls.

Updates golang/go#65917
Updates golang/go#69095

Change-Id: I2b54992681e2c671324e22668d8401962a1d2363
Reviewed-on: https://go-review.googlesource.com/c/tools/+/593683
Reviewed-by: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-20 21:11:01 +00:00
Alan Donovan 1d5e334177 internal/aliases: remove Alias and Unalias
These two declarations can now safely be accessed directly
from go/types.

Also, remove all mention of internal/aliases from gopls/...
We can enable two suppressed tests now that go1.23 is assured.

Updates golang/go#46477

Change-Id: I9ae8536b0d022e3300b285547c18202bed302cf2
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614638
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Commit-Queue: Tim King <taking@google.com>
Reviewed-by: Tim King <taking@google.com>
2024-09-20 19:51:09 +00:00
Tim King 0b6abe39e0 go/ssa: remove loader utility functions
Removes the loader utility functions loadProgram and buildPackage.
Renames buildContent to buildPackages.

For golang/go#69556

Change-Id: I13b4f14d8d8aedaa3edbaa54d34a97cc2d56253f
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614717
Reviewed-by: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-20 19:40:35 +00:00
Tim King 6a0cacbfc0 go/ssa: add test utility for building a single file
Adds a new testing utility function that builds a module an
package from the contents of a single file. This allows for
significant simplifications of the ssa tests. One benefit is
removing the use of the deprecated loader package.

Refactors loadPackages to work from an fs.FS.

For golang/go#69556.

Change-Id: If25f103982c82ea7945339e50f6c0e8576d276fa
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614735
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2024-09-20 18:36:24 +00:00
Alan Donovan 1204c80e1c cmd/gorename: delete
Fixes golang/go#69360

Change-Id: Ifea5e45eae670c45861fbc1f09ebe2872260b2e0
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614675
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-20 16:28:26 +00:00
Tim King 1c3716656e go/ssa: move build tag guarded tests
Move tests out of files that have build tag guards that
are now true for all supported versions.

Change-Id: Ia8c5c8d20aa11991288a65eab72146adac60a82a
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614457
Reviewed-by: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-20 16:26:40 +00:00
Tim King dfc41b5263 go/ssa: use ast.RangeStmt.Range position directly
ast.RangeStmt.Range has been available since 1.20.

Change-Id: Ia3f9b3075d39c6415e20dfdb3151e94fbf11a597
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614458
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2024-09-20 16:26:18 +00:00
Alan Donovan 3921b59364 cmd/gorename: remove replace directive
This makes it so that 'go install golang.org/x/tools/cmd/gorename@latest'
will continue to work. ('go install pkg@version' does not allow
replace directives.)

Updates golang/go#69360

Change-Id: I46a16a5d8dc7d1d1cf6c428388484e27f266f4e2
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614635
Auto-Submit: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Findley <rfindley@google.com>
2024-09-20 14:52:37 +00:00
Alan Donovan d09d36b49f x/tools: remove refs to cmd/gorename
Too bad I didn't include refactor/{rename,importgraph}
in the current proposal; they will need another.

Updates golang/go#69360

Change-Id: I8af544515893a0663621a19768adf64798c93671
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614159
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-19 23:09:23 +00:00
Alan Donovan 8517dc9911 cmd/gorename: create submodule
gorename is deprecated.
(Use gopls's Rename RPC or rename command instead.)

Once this module is tagged, we will delete it.
Clients will be able to use only the last version.

Updates golang/go#69360

Change-Id: I89ea5feade02f9fb15c7244847810f3c2261f7ff
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614158
Auto-Submit: Alan Donovan <adonovan@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-19 23:09:10 +00:00
Tim King cd349f34d5 go/ssa: Move instantiation tests off of unexported API
Change-Id: Ibf0af6eac594081f9274d08a5e932d9dc52355b6
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614295
Reviewed-by: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-19 17:14:40 +00:00
Alan Donovan 45851d3dc0 gopls/internal/telemetry/cmd/stacks: show build failure stderr
And other minor tweaks.

Change-Id: Ic16024cb2630d4ba144ead38856595ea8f6d81dd
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614178
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-19 15:56:50 +00:00
Hana (Hyang-Ah) Kim c8d229cde8 all: fix spelling errors
Reported originally in CL 611915 (vscode-go PR 3529).

And ran golangci-lint misspell checker to find a couple more.

Change-Id: I2dac2901191cc8759f0bd6b2084b61dbba174dd6
Reviewed-on: https://go-review.googlesource.com/c/tools/+/614156
Reviewed-by: Tim King <taking@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Findley <rfindley@google.com>
2024-09-18 20:18:32 +00:00
xieyuschen 8db95625fc go/ssa: update public doc of CreatePackage
Change-Id: I6ae61513717bac0bd756b612f0a843d55f1df296
GitHub-Last-Rev: 734464cdb3
GitHub-Pull-Request: golang/tools#520
Reviewed-on: https://go-review.googlesource.com/c/tools/+/613159
Reviewed-by: Carlos Amedee <carlos@golang.org>
Reviewed-by: Tim King <taking@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-18 19:40:51 +00:00
Alan Donovan bea7373d8a gopls/internal/protocol/command: remove nuisance error handling
The various command.NewXXXCommand functions all used to return
an error in case argument marshalling failed. However, in 100%
of cases, the particular argument types have infallible JSON
marshalling. This change emits the error handling code only
in the fallible cases (none yet).

Also, the New functions now return a pointer to a Command,
(as they should), simplifying surrounding logic.

(This is a preparatory cleanup for CL 612495.)

Change-Id: I2dac9f84034c2fade2ca05adc62129afc78e1cfe
Reviewed-on: https://go-review.googlesource.com/c/tools/+/613263
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Findley <rfindley@google.com>
2024-09-18 14:43:40 +00:00
xieyuschen 18a3f0501f go/ssa: remove outdated any normalizer setting up in test
Remove the outdated normalizer for formatting interface{} as
any during tests.

* another benefit is we remove the un-exported test function from
  example, it's clearer for pkgsite and godoc users.

Change-Id: Ibc0513e7487a278b1275de804aa8bd3b444a5496
GitHub-Last-Rev: 40157a9970
GitHub-Pull-Request: golang/tools#522
Reviewed-on: https://go-review.googlesource.com/c/tools/+/613161
Reviewed-by: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Tim King <taking@google.com>
2024-09-18 13:30:51 +00:00
xieyuschen 03550136e7 go/ssa: sanity check for package transient fields
Change-Id: I96badb1a6c4f3737a30e3a5fc5c458a1a64264bf
GitHub-Last-Rev: 9a332833af
GitHub-Pull-Request: golang/tools#519
Reviewed-on: https://go-review.googlesource.com/c/tools/+/613158
Commit-Queue: Alan Donovan <adonovan@google.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Tim King <taking@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2024-09-17 20:36:56 +00:00
Tim King 2aabc4f384 go/analysis/passes/printf: return when suppressing a non-constant diagnostic
Change-Id: Ied134c5e3b3414253de02f3ac4f8a7f73e9427ed
Reviewed-on: https://go-review.googlesource.com/c/tools/+/613516
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Findley <rfindley@google.com>
2024-09-17 19:40:05 +00:00
Stavros Panakakis 5cb6eeba24 txtar: use slices.Clone instead of copy
Use slices.Clone instead of copy now that x/tools uses Go >= 1.22.
Resolves an outstanding TODO.

Change-Id: Ia87f18e5e51f35dda5056538b9d0d0699c514ffc
GitHub-Last-Rev: 468e40586d
GitHub-Pull-Request: golang/tools#523
Reviewed-on: https://go-review.googlesource.com/c/tools/+/613835
Reviewed-by: Michael Matloob <matloob@golang.org>
Reviewed-by: Sam Thanawalla <samthanawalla@google.com>
Reviewed-by: Tim King <taking@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-17 19:37:25 +00:00
Alan Donovan e603756b2b gopls/internal/cache: add telemetry counter for GOPACKAGESDRIVER
Update a counter each time we observe a gopackages driver in
use. This will help us understand the conditions that led to
some crashes reported by telemetry.

Updates golang/go#60890

Change-Id: Ieca522c22b6f5bc9756210627bba82934946eaf8
Reviewed-on: https://go-review.googlesource.com/c/tools/+/594955
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-17 18:54:47 +00:00
Rob Findley 42b921c744 gopls/internal/test/integration: skip BenchmarkPackages with -short
The new BenchmarkPackages test is failing on the perf builder, because
the gopls.packages command is not supported by gopls@v0.11.0. By
convention, skip this benchmark with -short to filter it out from the
set of benchmarks run by x/benchmarks.

Change-Id: I5e6cc22212644be0a4fc2e6d8f4ce0f282330e00
Reviewed-on: https://go-review.googlesource.com/c/tools/+/613718
Reviewed-by: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-17 18:32:22 +00:00
Rob Findley a58d83bcd9 gopls/internal/cache: build the import map lazily during type checking
For larger repositories, a significant amount of time in the importer is
spent building the import map.

While we don't really want to persist these import maps, which can be
quite large, we can largely eliminate their cost by doing an incremental
breadth-first search of dependencies for the desired import path: most
imports are direct or found within a shallow search starting from the
original package.

As one reference point, the DiagnoseChange/kubernetes benchmark went
from 10% of CPU spent in importMap, to ~0% in importLookup.

Change-Id: I219aa6b7d41dfb11ec5d8a5e3819adc46dd37f2d
Reviewed-on: https://go-review.googlesource.com/c/tools/+/613715
Auto-Submit: Robert Findley <rfindley@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-17 17:12:07 +00:00
Tim King 765ea95f2b go/analysis/passes/printf: add global to disable new diagnostics
Adds a global to allow for disabling the new constant format string
for Printf calls. This is to allow for easier staged upgrades of
x/tools.

Change-Id: I5dc0d88cf6328a68e8994010e388366102afc892
Reviewed-on: https://go-review.googlesource.com/c/tools/+/613655
Reviewed-by: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-16 22:55:23 +00:00
Alan Donovan a319a85de8 gopls/internal/telemetry/cmd/stacks: display closed issues white
The isTerminal implementation works for our dev machines,
{darwin,linux} x {amd64,arm}, and avoids a dependency
on x/term, which gopls so far doesn't need... though I
am now tempted to find a pretext for the dependency.

Change-Id: If96b5cf737c9ea998d0612dec294295a5528b22a
Reviewed-on: https://go-review.googlesource.com/c/tools/+/613575
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-16 22:13:00 +00:00
Alan Donovan 5aac53c5ff gopls/internal/golang: Definition: jump to assembly
This CL adds support for jumping to the definition of a function
implemented in assembly. The first Definition query jumps to the
Go declaration, as usual; this func has no body. Executing a
second Definition query jumps to the assembly implementation,
if found.

+ Test, doc, relnote

Fixes golang/go#60531

Change-Id: I943a05d4a2a5b6a398450131831f49cc7c0754e4
Reviewed-on: https://go-review.googlesource.com/c/tools/+/612537
Reviewed-by: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-16 20:58:43 +00:00
Alan Donovan 8fcd92f832 gopls/internal/telemetry/cmd/stacks: predicate de-duplication
This CL introduces an expression language for matching
stacks, inspired by watchflakes.  Each issue has a block
at the start of its body of this form:

    ```
    #!stacks
    "bug.Reportf" && "golang.Hover:+19"
    ```

where the expression is a sentence of this grammar:

   expr = "string literal"
        | ( expr )
        | expr && expr
        | expr || expr
        | ! expr

A string literal implies a substring match against
a stack trace; the other forms are boolean operations.
The stacks command reads all such predicates at start,
and uses them to associate new stacks with existing
issues. (It reports an error if a stack is claimed by
two issues.) For each claim, it updates the issue
by adding a comment describing all the new stacks
(example: https://github.com/golang/go/issues/60890#issuecomment-2350023305)
and it adds/updates the "Dups: " list on the last
line of the issue body (first comment).

This should greatly reduce the amount of toil in
associating stacks with issues, since we can just
tweak the predicates to accommodate minor variations.

The GitHub auth token now needs R/W access to golang/go issues.

Fixes golang/go#65963

Change-Id: I836cd89bba456826839a389271ac38745e493a54
Reviewed-on: https://go-review.googlesource.com/c/tools/+/613215
Reviewed-by: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-16 15:23:58 +00:00
Alan Donovan 7891473c01 gopls/internal/telemetry/cmd/stacks: fix two bugs
1. There were three early returns in the frame -> URL
   computation, though it was hard to see, and their
   formatting logic differed. This CL factors them,
   extracting the frameURL function.

2. When git clone fails (e.g. due to no SSO cert),
   we failed to clean up the empty dir, causing a
   persistently stuck failure state. Now we attempt
   to clean up the directory. (This won't help when
   the program is terminated from without.)

Change-Id: I0f7e2dd26b95899ec85b3e4666def374dc8caadd
Reviewed-on: https://go-review.googlesource.com/c/tools/+/613076
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
2024-09-16 14:01:49 +00:00
Kir Kolyshkin 91d4bdb347 gopls: rm GofumptFormat from internal/settings
Since CL 612055 var GofumptFormat can never be nil, and since CL 609655
it is a very simple wrapper.

Remove it, and use mvdan.cc/gofumpt/format directly in internal/golang.

Note that this removes some documentation bits about gofumpt options, but
those are already described in internal/golang.Format inline comments.

Change-Id: Ic7d5b8412e913f2dbbc14befb978f8a4f743334a
Reviewed-on: https://go-review.googlesource.com/c/tools/+/611844
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Robert Findley <rfindley@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2024-09-13 18:33:14 +00:00
Tim King 198986d2dd go/ssa: go/ssa: disable TestTypeparamTest on wasm
watchflakes reported additional test cases for TestTypeparamTest on
wasm. Skipping the test when on wasm.

Fixes golang/go#69410
Fixes golang/go#69409

Change-Id: Icfe5da007bf7411e9875313bc1b190751f1c1a15
Reviewed-on: https://go-review.googlesource.com/c/tools/+/612855
Commit-Queue: Tim King <taking@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Tim King <taking@google.com>
2024-09-12 20:01:15 +00:00
Alan Donovan 3e49191340 gopls/internal/telemetry/cmd/stacks: generate CodeSearch links
This CL causes the stacks command to mark up each stack as a
set of links to CodeSearch. In order to do that, it needs to
build the gopls executable at the correct version of gopls and Go
and for the right GOOS and GOARCH, read the pclntab out of the
executable (which is the only authority on how to decode the
symbol names that appear in the stack counter), and then
construct CodeSearch URLs from (version, file, line) triples.

The expensive steps are cached in /tmp/gopls-stacks so that they
are paid infrequently in a typical stacks run.

See https://github.com/golang/go/issues/67288 for an example
of the updated output.

Fixes golang/go#64654

Change-Id: If1c3e42af5550114515b47a22dfa036e8da27143
Reviewed-on: https://go-review.googlesource.com/c/tools/+/611840
Auto-Submit: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Findley <rfindley@google.com>
2024-09-12 19:13:25 +00:00
Alan Donovan beed481fb5 gopls/internal/settings: use CodeActionKind hierarchy
This change causes all CodeActions returned by gopls to use a
specific leaf type such as refactor.inline.call, instead of a
general category such as refactor or refactor.inline. The
categories may continue to be specified in the "Only" parameter
of a CodeActions request, and they apply hierarchically.
This allows clients to be more specific in requesting a
particular Code Action.

Details of golang/codeaction.go (messy diff):
- don't separate "typed" from "syntax only" operations;
  in practice we always need types.
- enabled (func) replaces want (map). It is computed
  in server.CodeAction and plumbed down.
- the "add" helper wraps a Command in a CodeAction
  and adds it to the result.

Also:
- use camelCase names, following LSP's source.organizeImports.
- document the specific kinds in the user manual
  and add a release note.
- remove the CodeAction title regexp parameter from
  @codeaction{,err} marker tests since the kind is
  now sufficiently expressive.

Fixes golang/go#40438
Updates golang/go#68791
Updates golang/go#68783

Change-Id: I1898f79d8af441a0376ad5067d05e0621840d987
Reviewed-on: https://go-review.googlesource.com/c/tools/+/604818
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-12 17:34:21 +00:00
xizi 15b8886a84 SignatureHelp: report signature of Ident if no enclosing CallExpr
Currently, SignatureHelp reports information only about an
enclosing call expression. But it would be useful to show
signature information after entering the name of a function
such as "f" or "fmt.Println", without call parens.

So, if there is no enclosing call, this change reports the
signature of the selected identifier if it is callable.

Fixes golang/go#68922

Change-Id: Ibb0700e354c5d6e5937fc7f7b5db65e9d96574bb
GitHub-Last-Rev: 5e7965edd3
GitHub-Pull-Request: golang/tools#510
Reviewed-on: https://go-review.googlesource.com/c/tools/+/605983
Reviewed-by: Alan Donovan <adonovan@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-12 14:40:24 +00:00
Kir Kolyshkin 4e8d5c8a99 gopls: bump gofumpt to 0.7.0
Release notes: https://github.com/mvdan/gofumpt/releases/tag/v0.7.0

Note gofumpt now uses go/version to parse version string, so
fixLangVersion is no longer needed, but "go" prefix is a must.

Change-Id: I8b8e0eb3f0268cddf31ef2fcee90566a17a065ee
Reviewed-on: https://go-review.googlesource.com/c/tools/+/609655
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2024-09-12 14:25:03 +00:00
Tim King 6a387a400b go/ssa: require 1.23 for TestCycles
TestCycles requires internal/trace/testtrace which was added in 1.23.

Fixes golang/go#69387
Fixes golang/go#69408

Change-Id: Iaa6b24a94216e7f2d9f7239b131e4a7e9ef9210e
Reviewed-on: https://go-review.googlesource.com/c/tools/+/612399
Reviewed-by: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Tim King <taking@google.com>
2024-09-11 23:18:32 +00:00
Tim King 42a6477e4e go/ssa: disable TestTypeparamTest/chan.go on wasm
Also enables TestTypeparamTest/issue58513.go, which was
disabled for ssa/interp.

Fixes golang/go#64726

Change-Id: I7966fd09e6ec8de662a99f21086f6a5c34d86ab9
Reviewed-on: https://go-review.googlesource.com/c/tools/+/612398
Reviewed-by: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-11 22:28:28 +00:00
Viktor Stanchev 515711824d gopls/internal/lsp/source: put testing.T/B first when extracting
Put the testing.T/B second when extracting functions/methods.
It's next after context.Context.

Fixes golang/go#69341

Change-Id: Idcfc0e09e4174646a3f136dcc5badfda4af9938e
GitHub-Last-Rev: 99de9722e6
GitHub-Pull-Request: golang/tools#517
Reviewed-on: https://go-review.googlesource.com/c/tools/+/610976
Auto-Submit: Robert Findley <rfindley@google.com>
Reviewed-by: Tim King <taking@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Run-TryBot: Tim King <taking@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Tim King <taking@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2024-09-11 21:24:47 +00:00
xieyuschen 94ac686daf go/ssa: pop targets stack on range-over-func
Pop Function.targets when building a call to a range-over-func yield function and when building the yield function.

Also adds sanity checks to ensure all function transient fields are cleared.

Fixes golang/go#69298

Change-Id: I38b80ce8939cf2cd6cfd0ce0c119d75356d80ebf
GitHub-Last-Rev: 8c45b9c36e
GitHub-Pull-Request: golang/tools#516
Reviewed-on: https://go-review.googlesource.com/c/tools/+/611055
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Tim King <taking@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2024-09-11 21:04:56 +00:00
Alan Donovan 288437536f gopls/internal/golang: Definitions: support renaming imports in doc links
This CL adds support for jumping to the definition of a doc link when
the import is renamed. Before, the doc link had to use the local
(renamed) name, which is unnatural; now, it can use either the local
name or the package's declared name.

+ test

Updates golang/go#61677

Change-Id: Ibbe18ab1527800c41900d42781677ad892b55cd4
Reviewed-on: https://go-review.googlesource.com/c/tools/+/612045
Auto-Submit: Alan Donovan <adonovan@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Commit-Queue: Alan Donovan <adonovan@google.com>
2024-09-11 20:58:02 +00:00
Alan Donovan b0f680ccb8 go/ssa: reenable TestStdlib
It wasn't broken on the builder--only with my local go toolchain.
(There was some cgo-related problem with cmd/cgo/internal/test.)
At least that explains why we didn't notice the failures...

This CL also adds a missing error check that made the real cause
of the problem hard to spot, and improves some comments and
assertions.

Fixes golang/go#69287

Change-Id: Iccbe2a72770499749ca780f78e2a61d5576f613b
Reviewed-on: https://go-review.googlesource.com/c/tools/+/612044
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Findley <rfindley@google.com>
2024-09-10 18:45:04 +00:00
xieyuschen b7af269531 go/ssa: improve sanity checking
* sanity check transient fields
* sanity check signature recv/params and the Params field
* fix error checking 'err != err'

Change-Id: I5a9df1d59176c8ddc5521849490518eb277a51fa
GitHub-Last-Rev: c962476661
GitHub-Pull-Request: golang/tools#514
Reviewed-on: https://go-review.googlesource.com/c/tools/+/610059
Reviewed-by: Tim King <taking@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-10 17:05:04 +00:00
Rob Findley fd7ab2daaa gopls/internal/server: fix build following semantic merge conflict
Fix the gopls build, which was broken by a semantic merge conflict with
CL 548675 (the slices package was made obsolete after updating to Go
1.23.1).

Change-Id: Ic8b82598b66c560298dd9b8f968a1087e12320f3
Reviewed-on: https://go-review.googlesource.com/c/tools/+/611839
Reviewed-by: Hongxiang Jiang <hxjiang@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Tim King <taking@google.com>
2024-09-10 16:53:39 +00:00
Ethan Reesor dc4c52551c gopls/internal: test discovery
Implements test discovery. Tests are discovered as part of the type
checking process, at the same time as method sets and xrefs, and cached.
Does not implement the Modules command.

Adds static detection of simple subtests. This provides a framework for
static analysis of subtests but intentionally does not support more than
the most trivial case in order to minimize the complexity of this CL.

Fixes golang/go#59445. Updates golang/go#59445, golang/vscode-go#1602,
golang/vscode-go#2445.

Change-Id: Ief497977da09a1e07831e6c5f3b7d28d6874fd9f
Reviewed-on: https://go-review.googlesource.com/c/tools/+/548675
Reviewed-by: Alan Donovan <adonovan@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Auto-Submit: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-10 14:00:01 +00:00
Alan Donovan 8ba9169164 gopls/internal/golang: Highlight: work around go/types bug
go/types sometimes fails to annotate type information onto
nested composite literals when there is a type error (#69092).
This CL adds a workaround to one particularly vulnerable place
in gopls that crashes when this happens. (There are potentially
many others.)

+ test

Fixes golang/go#68918

Change-Id: I73e8e1dd8eb8965bde44d8ee3672a50ac362af52
Reviewed-on: https://go-review.googlesource.com/c/tools/+/612042
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Findley <rfindley@google.com>
2024-09-09 22:08:14 +00:00