commit | d19d8cffc1ef97a9aea46a95d5e8b4fd1c09f6e4 | [log] [tgz] |
---|---|---|
author | pjw <pjw@google.com> | Thu Feb 25 08:00:45 2021 -0500 |
committer | Peter Weinberger <pjw@google.com> | Fri Mar 05 18:01:59 2021 +0000 |
tree | 5b2876843f982ef00b061108b05e6c912c732f88 | |
parent | 50ca8d007de9b21f01bd77b65dcc827e7315ca4d [diff] |
internal/lsp/protocol/typecript: fix type merging Typescript merges different definitions for a type. This CL inserts a pass over the types to do merges better. It also has a lot of tiny renumberings to match error messages to the line they are on. There are two substantive changes to code.ts: 1. In the first pass over the parsed types, setData() (at line 195) is more careful about conflicts. 2. The new pass is cleanData() at line 528. All the code down to line 670 is used for this. 3. At line 1094, the names chosen for generated types (structs embedded in structs) needed to be made unique. The old code only worked by luck. 4. To merge, the code needs to change Nodes from the AST. Unfortunately the members of ts.Node are readonly, so one has to cheat the type system. This is done three times, using a varaible named 'fake'. The generated code in tsprotocol.go contains types that are never used. In Typescript these are parts of union types, but the Go code has chosen at most one of them. Change-Id: I15a9e5adedce35ea5f47c3fbce2a8a552fb7337e Reviewed-on: https://go-review.googlesource.com/c/tools/+/297429 Run-TryBot: Peter Weinberger <pjw@google.com> gopls-CI: kokoro <noreply+kokoro@google.com> TryBot-Result: Go Bot <gobot@golang.org> Trust: Peter Weinberger <pjw@google.com> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
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.
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
.
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.
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.