1
0
mirror of https://github.com/golang/go synced 2024-11-18 14:14:46 -07:00
The Go programming language
Go to file
haya14busa 84a35ef54d go/ast/astutil: new third-party imports shouldn't go in the std group
Before this change, astutil would only do a prefix match of a new import
with all the existing ones, to try to place it in the correct group. If
none was found, the new import would be placed at the beginning of the
first import group.

This works well for new std imports, but it doesn't work well for new
third-party packages that don't share any prefix with any of the
existing imports.

Example:

	import (
		"time"

		"github.com/golang/snappy"
	)

When adding "golang.org/x/sys/unix" with astutil.AddImport, the import
is inserted as follows:

	import (
		"golang.org/x/sys/unix"
		"time"

		"github.com/golang/snappy"
	)

And goimports reorganizes the imports to separate std and third-party
packages:

	import (
		"time"

		"golang.org/x/sys/unix"

		"github.com/golang/snappy"
	)

We usually don't want to introduce a new import group; in most cases,
the desired behavior is separating std from third-party packages.

With this CL, new imports that don't share prefix with any existing ones
will be placed with the first group of third-party imports, if any
exist. If no third-party import group exists, a new one will be added.
In the case of our example above, this will be the new outcome:

	import (
		"time"

		"github.com/golang/snappy"
		"golang.org/x/sys/unix"
	)

Fixes golang/go#19190.

Change-Id: Id4630015c029bd815234a6c8726cb97f4af16f1c
Reviewed-on: https://go-review.googlesource.com/37552
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
2017-08-15 00:39:00 +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/callgraph: fix "import path of the enclosing package" example in usage 2017-08-08 14:46:45 +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/ast/astutil: new third-party imports shouldn't go in the std group 2017-08-15 00:39:00 +00:00
godoc godoc: don't try to follow all symlinks 2017-08-07 23:14:37 +00:00
imports go/ast/astutil: new third-party imports shouldn't go in the std group 2017-08-15 00:39:00 +00:00
playground playground/socket: deflake test, remove sleep 2016-12-11 02:33:14 +00:00
present present: Set the background using CSS 2017-07-17 00:28:30 +00:00
refactor refactor/eg: already documented; remove TODO 2017-07-15 20:28:46 +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
codereview.cfg tools: add codereview.cfg 2015-03-18 17:04:00 +00: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

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.