I just noticed that import paths that start with an uppercase letter don't get imported automatically after the update.
Looking at the code and https://github.com/golang/tools/blob/master/imports/fix.go#L651, I tried to change the behavior, using strings.ToLower on `lastTwoComponents` like: for _, pkg := range dirScan { if !strings.Contains(strings.ToLower(lastTwoComponents(pkg.importPathShort)), pkgName) { // Speed optimization to minimize disk I/O: // the last two components on disk must contain the // package name somewhere. // // This permits mismatch naming like directory // "go-foo" being package "foo", or "pkg.v3" being "pkg", // or directory "google.golang.org/api/cloudbilling/v1" // being package "cloudbilling", but doesn't // permit a directory "foo" to be package // "bar", which is strongly discouraged // anyway. There's no reason goimports needs // to be slow just to accomodate that. continue } if !canUse(filename, pkg.dir) { continue } candidates = append(candidates, pkg) } and the imports work again like before. This is the test case: func TestFindImportGoPath(t *testing.T) { goroot, err := ioutil.TempDir("", "goimports-") if err != nil { t.Fatal(err) } defer os.RemoveAll(goroot) origStdlib := stdlib defer func() { stdlib = origStdlib }() stdlib = nil withEmptyGoPath(func() { // Test against imaginary bits/bytes package in std lib bytesDir := filepath.Join(goroot, "src", "pkg", "bits", "Bytes") for _, tag := range build.Default.ReleaseTags { // Go 1.4 rearranged the GOROOT tree to remove the "pkg" path component. if tag == "go1.4" { bytesDir = filepath.Join(goroot, "src", "bits", "Bytes") } } if err := os.MkdirAll(bytesDir, 0755); err != nil { t.Fatal(err) } bytesSrcPath := filepath.Join(bytesDir, "bytes.go") bytesPkgPath := "bits/Bytes" bytesSrc := []byte(`package bytes type Buffer2 struct {} `) if err := ioutil.WriteFile(bytesSrcPath, bytesSrc, 0775); err != nil { t.Fatal(err) } build.Default.GOROOT = goroot got, rename, err := findImportGoPath("bytes", map[string]bool{"Buffer2": true}, "x.go") if err != nil { t.Fatal(err) } if got != bytesPkgPath || !rename { t.Errorf(`findImportGoPath("bytes", Buffer2 ...)=%q, %t, want "%s", false`, got, rename, bytesPkgPath) } got, rename, err = findImportGoPath("bytes", map[string]bool{"Missing": true}, "x.go") if err != nil { t.Fatal(err) } if got != "" || rename { t.Errorf(`findImportGoPath("bytes", Missing ...)=%q, %t, want "", false`, got, rename) } }) } -Vince On Thursday, July 14, 2016 at 10:34:36 PM UTC-7, bradfitz wrote: > > goimports has been updated. > > If you've been frustrated by its speed lately, run: > > $ go get -u golang.org/x/tools/cmd/goimports > > ... and things should be much nicer. > > Details at https://golang.org/cl/24941 > > If I broke something, file a bug: https://golang.org/issues/new > > The general speed tracking bug is https://golang.org/issue/16367 (don't > use for new bugs, only for speed) > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.