aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/api')
-rw-r--r--src/cmd/api/goapi.go23
-rw-r--r--src/cmd/api/goapi_test.go3
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())