diff --git a/go/loader/stdlib_test.go b/go/loader/stdlib_test.go index b62ecfbb..a76f62b8 100644 --- a/go/loader/stdlib_test.go +++ b/go/loader/stdlib_test.go @@ -28,6 +28,17 @@ import ( "golang.org/x/tools/go/types" ) +// The set of packages that transitively depend on cmd/internal/objfile, +// which uses vendoring, which go/loader does not yet support. +// TODO(adonovan): add support for vendoring and delete this. +var skip = map[string]bool{ + "cmd/addr2line": true, + "cmd/internal/objfile": true, + "cmd/nm": true, + "cmd/objdump": true, + "cmd/pprof": true, +} + func TestStdlib(t *testing.T) { if runtime.GOOS == "android" { t.Skipf("incomplete std lib on %s", runtime.GOOS) @@ -44,6 +55,9 @@ func TestStdlib(t *testing.T) { ctxt.GOPATH = "" // disable GOPATH conf := loader.Config{Build: &ctxt} for _, path := range buildutil.AllPackages(conf.Build) { + if skip[path] { + continue + } conf.ImportWithTests(path) } diff --git a/go/ssa/example_test.go b/go/ssa/example_test.go index 3e095b87..8f86a358 100644 --- a/go/ssa/example_test.go +++ b/go/ssa/example_test.go @@ -113,15 +113,15 @@ func ExampleBuildPackage() { // return } -// This program shows how to load a main package (cmd/nm) and all its +// This program shows how to load a main package (cmd/cover) and all its // dependencies from source, using the loader, and then build SSA code // for the entire program. This is what you'd typically use for a // whole-program analysis. // func ExampleLoadProgram() { - // Load cmd/nm and its dependencies. + // Load cmd/cover and its dependencies. var conf loader.Config - conf.Import("cmd/nm") + conf.Import("cmd/cover") lprog, err := conf.Load() if err != nil { fmt.Print(err) // type error in some package @@ -131,7 +131,7 @@ func ExampleLoadProgram() { // Create SSA-form program representation. prog := ssautil.CreateProgram(lprog, ssa.SanityCheckFunctions) - // Build SSA code for the entire cmd/nm program. + // Build SSA code for the entire cmd/cover program. prog.BuildAll() // Output: diff --git a/go/ssa/stdlib_test.go b/go/ssa/stdlib_test.go index d339d07d..57260161 100644 --- a/go/ssa/stdlib_test.go +++ b/go/ssa/stdlib_test.go @@ -27,6 +27,18 @@ import ( "golang.org/x/tools/go/ssa/ssautil" ) +// Skip the set of packages that transitively depend on +// cmd/internal/objfile, which uses vendoring, +// which go/loader does not yet support. +// TODO(adonovan): add support for vendoring and delete this. +var skip = map[string]bool{ + "cmd/addr2line": true, + "cmd/internal/objfile": true, + "cmd/nm": true, + "cmd/objdump": true, + "cmd/pprof": true, +} + func bytesAllocated() uint64 { runtime.GC() var stats runtime.MemStats @@ -43,9 +55,11 @@ func TestStdlib(t *testing.T) { ctxt := build.Default // copy ctxt.GOPATH = "" // disable GOPATH conf := loader.Config{Build: &ctxt} - if _, err := conf.FromArgs(buildutil.AllPackages(conf.Build), true); err != nil { - t.Errorf("FromArgs failed: %v", err) - return + for _, path := range buildutil.AllPackages(conf.Build) { + if skip[path] { + continue + } + conf.ImportWithTests(path) } iprog, err := conf.Load()