Go to file
Dominik Honnef a99f4ece36 go/pointer: implement extended queries
The existing API for querying values only allows directly querying
pointer-like values, or pointers to such values. The new, extended
queries make it possible to destructure values and access arbitrarily
nested pointers, such as fields in structs, or specific values in
tuples.

We use single Go expressions as the queries, which we further restrict
to a subset of the language (indexing, field access, pointer
dereferences and channel receives).

Instead of adding another map to Result, we return a *Pointer and
populate it during analysis. This does mean that a Config cannot be
reused for multiple analyses, as it now holds analysis-specific state.
That is, however, not a big problem as reusing one Config had little
use.

Since the new API can do everything the old could, it deprecates
AddQuery and AddIndirectQuery.

Change-Id: I4b2ae7d85c462bc7faa6bab76456106e76be5a65
Reviewed-on: https://go-review.googlesource.com/37635
Reviewed-by: Alan Donovan <adonovan@google.com>
2017-03-06 04:11:41 +00:00
benchmark/parse benchmark/parse: fix cosmetic defect in error str. 2015-02-02 17:07:43 +00:00
blog blog/atom: support atom:link as in RFC4287 4.2.7 2017-02-04 21:42:09 +00:00
cmd cmd/godoc, godoc: implement build.Context.IsDir, update expected error string 2017-03-05 21:32:12 +00:00
container/intsets Revert "x/tools/container/intsets: remove unused function" 2017-03-01 14:51:44 +00:00
cover cover: fixed broken error message 2016-03-08 18:20:19 +00:00
go go/pointer: implement extended queries 2017-03-06 04:11:41 +00:00
godoc cmd/godoc, godoc: implement build.Context.IsDir, update expected error string 2017-03-05 21:32:12 +00:00
imports x/tools/imports: remove unused type gate. 2017-03-01 15:49:35 +00:00
playground playground/socket: deflake test, remove sleep 2016-12-11 02:33:14 +00:00
present x/tools/present: remove unused code 2017-03-01 14:50:10 +00:00
refactor x/tools/refactor/eg: remove unused variable 2017-03-01 14:46:18 +00:00
third_party cmd/heapview: dowgrade to customelements v0 2016-08-05 20:49:36 +00:00
.gitattributes tools: copying .gitattributes to all subrepositories (fixes windows build) 2014-12-23 06:32:51 +00:00
.gitignore dashboard: rearrange tree, in prep for packagification 2015-01-15 02:58:11 +00:00
AUTHORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
CONTRIBUTING.md doc: add CONTRIBUTING.md 2015-02-18 23:43:38 +00:00
CONTRIBUTORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05: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 x/tools: s/oracle/guru/g in various comments 2016-10-13 18:54:04 +00:00
codereview.cfg tools: add codereview.cfg 2015-03-18 17:04:00 +00:00

README

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.

To submit changes to this repository, see http://golang.org/doc/contribute.html.