From b6c30b58fc98af83f12e946ffeddd50d0cebb8f0 Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Mon, 29 Sep 2014 12:46:11 -0700 Subject: [PATCH] go.tools/imports: recognize exports in cgo files Fixes golang/go#8815. LGTM=bradfitz R=bradfitz CC=golang-codereviews https://golang.org/cl/143660044 --- imports/fix.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/imports/fix.go b/imports/fix.go index c77f93ff..47a98f9d 100644 --- a/imports/fix.go +++ b/imports/fix.go @@ -283,15 +283,17 @@ func loadExportsGoPath(dir string) map[string]bool { return nil } fset := token.NewFileSet() - for _, file := range buildPkg.GoFiles { - f, err := parser.ParseFile(fset, filepath.Join(dir, file), nil, 0) - if err != nil { - fmt.Fprintf(os.Stderr, "could not parse %q: %v\n", file, err) - continue - } - for name := range f.Scope.Objects { - if ast.IsExported(name) { - exports[name] = true + for _, files := range [...][]string{buildPkg.GoFiles, buildPkg.CgoFiles} { + for _, file := range files { + f, err := parser.ParseFile(fset, filepath.Join(dir, file), nil, 0) + if err != nil { + fmt.Fprintf(os.Stderr, "could not parse %q: %v\n", file, err) + continue + } + for name := range f.Scope.Objects { + if ast.IsExported(name) { + exports[name] = true + } } } }