aboutsummaryrefslogtreecommitdiff
path: root/src/go
diff options
context:
space:
mode:
authorCarlos Alexandro Becker <caarlos0@gmail.com>2020-12-02 21:04:13 +0000
committerRobert Griesemer <gri@golang.org>2020-12-02 23:05:56 +0000
commit48838c35dc7c8e938a83db66faabf3a51f4adc3d (patch)
tree69c1955897e00bdec727d8e79f3e5a2971eff8a0 /src/go
parent2d0258d49568d4b34f5c4dec53985bb80bf370cc (diff)
downloadgo-48838c35dc7c8e938a83db66faabf3a51f4adc3d.tar.gz
go-48838c35dc7c8e938a83db66faabf3a51f4adc3d.zip
go/parser: ignore subdirectories in ParseDir
Issue and PR on GoReleaser: - https://github.com/goreleaser/goreleaser/issues/1897 - https://github.com/goreleaser/goreleaser/pull/1899 Fixes #42951. Change-Id: Ia0d6018e0bad59cd60cd600188c368c431032a4b GitHub-Last-Rev: be59d85fe2d473f4dfd828a244023c4064d6e31f GitHub-Pull-Request: golang/go#42581 Reviewed-on: https://go-review.googlesource.com/c/go/+/269897 Trust: Robert Griesemer <gri@golang.org> Trust: Dmitri Shuralyov <dmitshur@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
Diffstat (limited to 'src/go')
-rw-r--r--src/go/parser/interface.go2
-rw-r--r--src/go/parser/parser_test.go8
-rw-r--r--src/go/parser/testdata/issue42951/not_a_file.go/invalid.go1
3 files changed, 10 insertions, 1 deletions
diff --git a/src/go/parser/interface.go b/src/go/parser/interface.go
index cc7e455c4d..d5c18a9e2d 100644
--- a/src/go/parser/interface.go
+++ b/src/go/parser/interface.go
@@ -140,7 +140,7 @@ func ParseDir(fset *token.FileSet, path string, filter func(fs.FileInfo) bool, m
pkgs = make(map[string]*ast.Package)
for _, d := range list {
- if strings.HasSuffix(d.Name(), ".go") && (filter == nil || filter(d)) {
+ if !d.IsDir() && strings.HasSuffix(d.Name(), ".go") && (filter == nil || filter(d)) {
filename := filepath.Join(path, d.Name())
if src, err := ParseFile(fset, filename, nil, mode); err == nil {
name := src.Name.Name
diff --git a/src/go/parser/parser_test.go b/src/go/parser/parser_test.go
index 7193a329fe..a4f882d368 100644
--- a/src/go/parser/parser_test.go
+++ b/src/go/parser/parser_test.go
@@ -82,6 +82,14 @@ func TestParseDir(t *testing.T) {
}
}
+func TestIssue42951(t *testing.T) {
+ path := "./testdata/issue42951"
+ _, err := ParseDir(token.NewFileSet(), path, nil, 0)
+ if err != nil {
+ t.Errorf("ParseDir(%s): %v", path, err)
+ }
+}
+
func TestParseExpr(t *testing.T) {
// just kicking the tires:
// a valid arithmetic expression
diff --git a/src/go/parser/testdata/issue42951/not_a_file.go/invalid.go b/src/go/parser/testdata/issue42951/not_a_file.go/invalid.go
new file mode 100644
index 0000000000..bb698be11c
--- /dev/null
+++ b/src/go/parser/testdata/issue42951/not_a_file.go/invalid.go
@@ -0,0 +1 @@
+This file should not be parsed by ParseDir.