https://github.com/golang/go/issues/16402
On Saturday, July 16, 2016 at 9:51:16 PM UTC-7, bradfitz wrote: > > Please file a bug. I lose emails. > > > On Sat, Jul 16, 2016 at 1:29 PM, Vince Prignano <vincenzo...@gmail.com > <javascript:>> wrote: > >> 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...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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.