1
0
mirror of https://github.com/golang/go synced 2024-10-01 07:38:32 -06:00
go/imports
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
..
fastwalk_dirent_fileno.go cmd/goimports, imports: optimize directory scanning and other things 2016-07-19 03:21:45 +00:00
fastwalk_dirent_ino.go imports: don't use fastpath on appengine (syscall not available) 2016-08-15 22:01:42 +00:00
fastwalk_portable.go imports: don't use fastpath on appengine (syscall not available) 2016-08-15 22:01:42 +00:00
fastwalk_test.go imports: fix formatting directive error found by go vet 2017-02-12 17:59:58 +00:00
fastwalk_unix.go imports: don't use fastpath on appengine (syscall not available) 2016-08-15 22:01:42 +00:00
fastwalk.go imports: wait for fastWalk workers to finish before returning (take 2) 2017-04-25 17:30:35 +00:00
fix_test.go go/ast/astutil: new third-party imports shouldn't go in the std group 2017-08-15 00:39:00 +00:00
fix.go imports: print dir of candidates in addition to import path 2017-08-06 16:51:46 +00:00
imports.go imports: remove unnecessary string conversion 2017-01-22 22:46:49 +00:00
mkindex.go go.tools/imports: move goimports from github to go.tools. 2013-12-17 21:21:03 -05:00
mkstdlib.go imports: update zstdlib to Go 1.9 2017-07-17 03:03:41 +00:00
sortimports.go imports: Remove ancient Go 1.1 compatibility indirections. 2015-12-14 00:47:31 +00:00
zstdlib.go imports: update zstdlib to Go 1.9 2017-07-17 03:03:41 +00:00