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> |
||
---|---|---|
.. | ||
analysis | ||
ast | ||
buildutil | ||
callgraph | ||
cfg | ||
expect | ||
gccgoexportdata | ||
gcexportdata | ||
internal | ||
loader | ||
packages | ||
pointer | ||
ssa | ||
types | ||
vcs |