diff options
Diffstat (limited to 'src/cmd/api')
| -rw-r--r-- | src/cmd/api/goapi.go | 23 | ||||
| -rw-r--r-- | src/cmd/api/goapi_test.go | 3 |
2 files changed, 9 insertions, 17 deletions
diff --git a/src/cmd/api/goapi.go b/src/cmd/api/goapi.go index ee0f92328e..fe9c862f4f 100644 --- a/src/cmd/api/goapi.go +++ b/src/cmd/api/goapi.go @@ -74,16 +74,10 @@ func main() { pkgs = strings.Fields(string(stds)) } - tree, _, err := build.FindTree("os") // some known package - if err != nil { - log.Fatalf("failed to find tree: %v", err) - } - var featureCtx = make(map[string]map[string]bool) // feature -> context name -> true for _, context := range contexts { w := NewWalker() w.context = context - w.tree = tree for _, pkg := range pkgs { w.wantedPkg[pkg] = true @@ -95,7 +89,7 @@ func main() { strings.HasPrefix(pkg, "old/") { continue } - if !tree.HasSrc(pkg) { + if fi, err := os.Stat(filepath.Join(w.root, pkg)); err != nil || !fi.IsDir() { log.Fatalf("no source in tree for package %q", pkg) } w.WalkPackage(pkg) @@ -165,7 +159,7 @@ type pkgSymbol struct { type Walker struct { context *build.Context - tree *build.Tree + root string fset *token.FileSet scope []string features map[string]bool // set @@ -191,6 +185,7 @@ func NewWalker() *Walker { selectorFullPkg: make(map[string]string), wantedPkg: make(map[string]bool), prevConstType: make(map[pkgSymbol]string), + root: filepath.Join(build.Default.GOROOT, "src/pkg"), } } @@ -252,15 +247,13 @@ func (w *Walker) WalkPackage(name string) { defer func() { w.packageState[name] = loaded }() - dir := filepath.Join(w.tree.SrcDir(), filepath.FromSlash(name)) + dir := filepath.Join(w.root, filepath.FromSlash(name)) - var info *build.DirInfo - var err error - if ctx := w.context; ctx != nil { - info, err = ctx.ScanDir(dir) - } else { - info, err = build.ScanDir(dir) + ctxt := w.context + if ctxt == nil { + ctxt = &build.Default } + info, err := ctxt.ImportDir(dir, 0) if err != nil { if strings.Contains(err.Error(), "no Go source files") { return diff --git a/src/cmd/api/goapi_test.go b/src/cmd/api/goapi_test.go index dbbec46b0d..c7cc601b1a 100644 --- a/src/cmd/api/goapi_test.go +++ b/src/cmd/api/goapi_test.go @@ -7,7 +7,6 @@ package main import ( "flag" "fmt" - "go/build" "io/ioutil" "os" "path/filepath" @@ -36,7 +35,7 @@ func TestGolden(t *testing.T) { w := NewWalker() w.wantedPkg[fi.Name()] = true - w.tree = &build.Tree{Path: "testdata", Goroot: true} + w.root = "testdata/src/pkg" goldenFile := filepath.Join("testdata", "src", "pkg", fi.Name(), "golden.txt") w.WalkPackage(fi.Name()) |
