commit | 6d70fb2e85323e81c89374331d3d2b93304faa36 | [log] [tgz] |
---|---|---|
author | Robert Griesemer <gri@golang.org> | Tue Nov 14 21:27:03 2017 -0800 |
committer | Robert Griesemer <gri@golang.org> | Thu Nov 16 01:30:56 2017 +0000 |
tree | f3bf42d79fdba7056d2596502c6df5c0ab7faaa5 | |
parent | 4de4a8d2069ae83551a383b100f80859283a6a12 [diff] |
go/ast/astutil: add Apply, for rewriting Go ASTs This change implements an AST walker, Apply, with the capability to perform various actions (including rewrites) during the AST walk, in pre- and post-iteration order. Ideally we would like to have this functionality in the std lib (go/ast), but as this change contains significant new API, it is better to first gain some experience with it in x/tools. Credits: This is joint work of Josh Bleecher Snyder, Roger Peppe, and myself (author of this CL). The code is based on proposal golang/go#17108 which I had started, together with an initial implementation. It was then reworked significantly by Josh in golang.org/cl/55790, further refined by suggestions from Roger (allocation reduction), and finally cleaned up a bit by me (AST simplifications). Fixes golang/go#17108. Change-Id: I56d56b7f2bc5be2acfeb927f76aea7f264bb7b94 Reviewed-on: https://go-review.googlesource.com/77811 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com>
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 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.