commit | 4ca49954c3f2dca17746a9bd2d3f253c4849d9ee | [log] [tgz] |
---|---|---|
author | Dmitri Shuralyov <dmitshur@golang.org> | Mon Nov 05 17:36:47 2018 -0500 |
committer | Dmitri Shuralyov <dmitshur@golang.org> | Wed Nov 07 22:33:19 2018 +0000 |
tree | 5d3140c8ed0202c5ccf682ef26b6af981e86b77f | |
parent | 34b416bd17b3a33e02879e34237e92c171550ed5 [diff] |
go/ast/astutil: allow AddNamedImport to add imports with different names This change makes AddNamedImport more symmetrical to DeleteNamedImport in behavior, signature, and documentation. In Go, it is valid to import a package (identified by an import path) with different names in a single .go file¹. For example, this is ok, and the program will build as long as there are no unused imports²: import ( "path" . "path" _ "path" pathpkg "path" ) The four imports (represented by ast.ImportSpec type) have the same import path, but different names. It's currently possible to use DeleteNamedImport to delete the exact {name, import path} ast.ImportSpec from an AST. Previously, it wasn't possible to use AddNamedImport to add an exact {name, import path} ast.ImportSpec if the AST already has another ast.ImportSpec with the same import path (but different name). This change fixes that, making it possible to use AddNamedImport as expected. Rename the ipath parameter to path in AddNamedImport for consistency with DeleteNamedImport. Also change the language used in its documentation to be more precise and consistent with DeleteNamedImport. Add test cases for this behavior. The DeleteNamedImport test cases were passing before any changes to the astutil code. Add test coverage for the return bool value of {Add,Delete}NamedImport. Document the behavior of DeleteNamedImport when there are duplicate matching imports. Simplify string(buf.Bytes()) to buf.String() in test helper code. ¹ https://golang.org/ref/spec#Import_declarations ² https://play.golang.org/p/bi6L34rQbcD Fixes golang/go#28605 Fixes golang/go#16411 Change-Id: I70e887f5174764ab1cf32a761c8c734e216eea67 Reviewed-on: https://go-review.googlesource.com/c/147448 Run-TryBot: Dmitri Shuralyov <dmitshur@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.