diff options
author | Robert Griesemer <gri@golang.org> | 2020-12-14 11:53:55 -0800 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2020-12-14 12:13:36 -0800 |
commit | 91803a2df334ddfc9377ef4d07cc5f0eff51b6a2 (patch) | |
tree | 277500790211cdab0ee3f12e1833efa44495afbc /src/go/parser/interface.go | |
parent | a20021227e987a24d3dbac5118a9dee4d90a96ff (diff) | |
parent | 89f38323faa57d3f7475016f778be69fcffbe9fb (diff) | |
download | go-91803a2df334ddfc9377ef4d07cc5f0eff51b6a2.tar.gz go-91803a2df334ddfc9377ef4d07cc5f0eff51b6a2.zip |
[dev.typeparams] merge: merge branch 'dev.regabi' into 'dev.typeparams'
The following files had merge conflicts and were merged manually:
src/cmd/compile/fmtmap_test.go
src/cmd/compile/internal/gc/noder.go
src/go/parser/error_test.go
test/assign.go
test/chan/perm.go
test/fixedbugs/issue22822.go
test/fixedbugs/issue4458.go
test/init.go
test/interface/explicit.go
test/map1.go
test/method2.go
The following files had manual changes to make tests pass:
test/run.go
test/used.go
src/cmd/compile/internal/types2/stdlib_test.go
Change-Id: Ia495aaaa80ce321ee4ec2a9105780fbe913dbd4c
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 1c9a1acd66..b8b312463f 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). @@ -134,29 +134,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 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 } } |