diff --git a/imports/fix.go b/imports/fix.go index 4c0339305d..777d28ccdb 100644 --- a/imports/fix.go +++ b/imports/fix.go @@ -1043,7 +1043,7 @@ func findImport(ctx context.Context, env *fixEnv, dirScan []*pkg, pkgName string // Find candidate packages, looking only at their directory names first. var candidates []pkgDistance for _, pkg := range dirScan { - if pkgIsCandidate(filename, pkgName, pkg) { + if pkg.dir != pkgDir && pkgIsCandidate(filename, pkgName, pkg) { candidates = append(candidates, pkgDistance{ pkg: pkg, distance: distance(pkgDir, pkg.dir), diff --git a/imports/fix_test.go b/imports/fix_test.go index d34fef66e4..101978c1ae 100644 --- a/imports/fix_test.go +++ b/imports/fix_test.go @@ -2066,6 +2066,28 @@ var _ = fmt.Printf } +// Tests that an input file's own package is ignored. +func TestIgnoreOwnPackage(t *testing.T) { + const input = `package pkg + +const _ = pkg.X +` + const want = `package pkg + +const _ = pkg.X +` + + testConfig{ + module: packagestest.Module{ + Name: "foo.com", + Files: fm{ + "pkg/a.go": "package pkg\nconst X = 1", + "pkg/b.go": input, + }, + }, + }.processTest(t, "foo.com", "pkg/b.go", nil, nil, want) +} + func TestPkgIsCandidate(t *testing.T) { tests := []struct { name string