diff --git a/internal/gps/_testdata/src/dotgodir/.go/.gitkeep b/internal/gps/_testdata/src/dotgodir/.go/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/internal/gps/pkgtree/pkgtree.go b/internal/gps/pkgtree/pkgtree.go index a83fb4e034..bb4700c0ef 100644 --- a/internal/gps/pkgtree/pkgtree.go +++ b/internal/gps/pkgtree/pkgtree.go @@ -203,6 +203,12 @@ func fillPackage(p *build.Package) error { if filepath.Base(file)[0] == '_' { continue } + + // Skip any directories that happen to end with ".go" + if stat, err := os.Stat(file); err == nil && stat.IsDir() { + continue + } + pf, err := parser.ParseFile(token.NewFileSet(), file, nil, parser.ImportsOnly|parser.ParseComments) if err != nil { if os.IsPermission(err) { diff --git a/internal/gps/pkgtree/pkgtree_test.go b/internal/gps/pkgtree/pkgtree_test.go index 1cecf65cf6..5ca1b90117 100644 --- a/internal/gps/pkgtree/pkgtree_test.go +++ b/internal/gps/pkgtree/pkgtree_test.go @@ -1280,6 +1280,11 @@ func TestListPackages(t *testing.T) { }, }, }, + "skip '.go' directories": { + fileRoot: j("dotgodir"), + importRoot: "dotgodir", + err: nil, + }, } for name, fix := range table {