1
0
mirror of https://github.com/golang/go synced 2024-09-30 16:28:32 -06:00
The Go programming language
Go to file
Heschi Kreinick a9439ae9c1 internal/lsp: replace ParseGoHandle with concrete data
ParseGoHandles serve two purposes: they pin cache entries so that
redundant calculations are cached, and they allow users to obtain the
actual parsed AST. The former is an implementation detail, and the
latter turns out to just be an annoyance.

Parsed Go files are obtained from two places. By far the most common is
from a type checked package. But a type checked package must by
definition have already parsed all the files it contains, so the PGH
is already computed and cannot have failed. Type checked packages can
simply return the parsed file without requiring a separate Check
operation. We do want to pin the cache entries in this case, which I've
done by holding on to the PGH in cache.pkg.

There are some cases where we directly parse a file, such as for the
FoldingRange LSP call, which doesn't need type information. Those parses
can actually fail, so we do need an error check. But we don't need the
PGH; in all cases we are immediately using and discarding it.

So it turns out we don't actually need the PGH type at all, at least not
in the public API. Instead, we can pass around a concrete struct that
has the various pieces of data directly available.

This uncovered a bug in typeCheck: it should fail if it encounters any
real errors.

Change-Id: I203bf2dd79d5d65c01392d69c2cf4f7744fde7fc
Reviewed-on: https://go-review.googlesource.com/c/tools/+/244021
Run-TryBot: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2020-07-28 17:35:11 +00:00
benchmark/parse benchmark/parse: add unit test for String function 2019-12-16 21:43:19 +00:00
blog blog: use serial comma in long author lists 2020-03-25 19:41:47 +00:00
cmd internal/imports: require valid options, move LocalPrefix up 2020-07-07 20:02:13 +00:00
container/intsets all: fix some staticcheck errors 2020-01-29 04:53:41 +00:00
cover cover: error on negative numbers in profiles 2020-01-15 21:23:19 +00:00
go go/packages: add failing test for golang/go#37098 2020-07-23 16:59:20 +00:00
godoc godoc/static: replace innerHTML with textContent 2020-05-28 18:54:14 +00:00
gopls internal/lsp/lsprpc: improvements to daemon logging 2020-07-16 19:33:22 +00:00
imports internal/imports: require valid options, move LocalPrefix up 2020-07-07 20:02:13 +00:00
internal internal/lsp: replace ParseGoHandle with concrete data 2020-07-28 17:35:11 +00:00
playground playground/socket: handle multi-file present play snippets 2019-12-03 04:46:16 +00:00
present x/tools/present: point to instagram sted twitter for Renee French 2020-03-30 04:01:39 +00:00
refactor all: fix more typos 2019-09-11 15:13:14 +00:00
txtar txtar/archive: add unit test function for Format 2019-11-20 20:49:00 +00:00
.gitattributes tools: copying .gitattributes to all subrepositories (fixes windows build) 2014-12-23 06:32:51 +00:00
.gitignore .gitignore: roll back ".gitignore: ignore emacs backup files" 2018-02-13 00:43:28 +00:00
.prettierrc all: add a section on JS/CSS formatting to README 2020-05-28 15:31:34 +00:00
AUTHORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
codereview.cfg tools: add codereview.cfg 2015-03-18 17:04:00 +00:00
CONTRIBUTING.md CONTRIBUTING.md: remove note about not accepting Pull Requests 2018-03-14 18:02:17 +00:00
CONTRIBUTORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
go.mod all: update dependencies in go.mod file 2020-07-06 23:19:48 +00:00
go.sum all: update dependencies in go.mod file 2020-07-06 23:19:48 +00:00
LICENSE LICENSE: add 2012-03-17 15:20:58 +11:00
PATENTS go.empty: add PATENTS file to the subrepo. 2012-04-16 11:24:04 +10:00
README.md all: add a section on JS/CSS formatting to README 2020-05-28 15:31:34 +00:00

Go Tools

This subrepository holds the source for various packages and tools that support the Go programming language.

Some of the tools, godoc and vet for example, are included in binary Go distributions.

Others, including the Go guru and the test coverage tool, can be fetched with go get.

Packages include a type-checker for Go and an implementation of the Static Single Assignment form (SSA) representation for Go programs.

Download/Install

The easiest way to install is to run go get -u golang.org/x/tools/.... You can also manually git clone the repository to $GOPATH/src/golang.org/x/tools.

JS/CSS Formatting

This repository uses prettier to format JS and CSS files.

The version of prettier used is 1.18.2.

It is encouraged that all JS and CSS code be run through this before submitting a change. However, it is not a strict requirement enforced by CI.

Report Issues / Send Patches

This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://golang.org/doc/contribute.html.

The main issue tracker for the tools repository is located at https://github.com/golang/go/issues. Prefix your issue with "x/tools/(your subdir):" in the subject line, so it is easy to find.