diff options
author | Alexander Rakoczy <alex@golang.org> | 2020-12-14 11:42:42 -0500 |
---|---|---|
committer | Alexander Rakoczy <alex@golang.org> | 2020-12-14 11:42:42 -0500 |
commit | 267975dc4732b6f6a62a7d33a85de34efef180b7 (patch) | |
tree | fd69c51067a279d959b233b94bccf2bf969317a7 /src/go/parser/interface.go | |
parent | 63bc23b5452f6605df3e40ce7ecdd8b0348792af (diff) | |
parent | 6c64b6db6802818dd9a4789cdd564f19b70b6b4c (diff) | |
download | go-git-267975dc4732b6f6a62a7d33a85de34efef180b7.tar.gz |
Merge branch 'master' into dev.regabi
Change-Id: I098acdbc5e2676aeb8700d935e796a9c29d04b88
Diffstat (limited to 'src/go/parser/interface.go')
-rw-r--r-- | src/go/parser/interface.go | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/src/go/parser/interface.go b/src/go/parser/interface.go index d5c18a9e2d..56ff5fefb4 100644 --- a/src/go/parser/interface.go +++ b/src/go/parser/interface.go @@ -13,7 +13,7 @@ import ( "go/token" "io" "io/fs" - "io/ioutil" + "os" "path/filepath" "strings" ) @@ -39,7 +39,7 @@ func readSource(filename string, src interface{}) ([]byte, error) { } return nil, errors.New("invalid source") } - return ioutil.ReadFile(filename) + return os.ReadFile(filename) } // A Mode value is a set of flags (or 0). @@ -133,29 +133,39 @@ func ParseFile(fset *token.FileSet, filename string, src interface{}, mode Mode) // first error encountered are returned. // func ParseDir(fset *token.FileSet, path string, filter func(fs.FileInfo) bool, mode Mode) (pkgs map[string]*ast.Package, first error) { - list, err := ioutil.ReadDir(path) + list, err := os.ReadDir(path) if err != nil { return nil, err } pkgs = make(map[string]*ast.Package) for _, d := range list { - 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 - pkg, found := pkgs[name] - if !found { - pkg = &ast.Package{ - Name: name, - Files: make(map[string]*ast.File), - } - pkgs[name] = pkg + if d.IsDir() || !strings.HasSuffix(d.Name(), ".go") { + continue + } + if filter != nil { + info, err := d.Info() + if err != nil { + return nil, err + } + if !filter(info) { + continue + } + } + filename := filepath.Join(path, d.Name()) + if src, err := ParseFile(fset, filename, nil, mode); err == nil { + name := src.Name.Name + pkg, found := pkgs[name] + if !found { + pkg = &ast.Package{ + Name: name, + Files: make(map[string]*ast.File), } - pkg.Files[filename] = src - } else if first == nil { - first = err + pkgs[name] = pkg } + pkg.Files[filename] = src + } else if first == nil { + first = err } } |