mirror of
https://github.com/golang/go.git
synced 2025-05-05 15:43:04 +00:00
For clarity and performance reasons, we want the fast path of goimports to be purely syntactic. Packages whose import paths don't match their package names make this harder. Before this CL, we parsed each imported package to get its real package name. Now, we make named imports for such packages, and on subsequent runs we don't have to do the extra work. A package name matches its import path if the name is the last segment of the path, or the next-to-last before a version suffix vNN. gopkg.in style .vNN suffixes are considered mismatching. goimports already had almost exactly the desired logic, but only when adding a new import. So the bulk of this change is simply removing the logic that allowed it to recognize that a mismatched import satisfied some uses. With that gone, it will remove those imports as unused, then add a new renamed import. Some comments may be destroyed. Fixes golang/go#28428 Change-Id: I53846e6046affb420f41719f84c71086c5b9e5e6 Reviewed-on: https://go-review.googlesource.com/c/145699 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>