From 34ae141ecc497f26b54c3a9d04cb19b3b1019b1a Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Fri, 11 Dec 2015 00:00:02 -0500 Subject: [PATCH] go/loader: use build.AllowVendor during Import on Go 1.6 and later Makes programs like ssadump work on packages using vendored code, for example net/http. For golang/go#12278. Depends on CL 17726 in main repository. Change-Id: Ibabf564e397044a0f449087124dd96161081baaf Reviewed-on: https://go-review.googlesource.com/17727 Reviewed-by: Brad Fitzpatrick Reviewed-by: Alan Donovan --- go/loader/loader.go | 3 ++- go/loader/loader_go15.go | 11 +++++++++++ go/loader/loader_go16.go | 11 +++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 go/loader/loader_go15.go create mode 100644 go/loader/loader_go16.go diff --git a/go/loader/loader.go b/go/loader/loader.go index 5c87a29d..98305276 100644 --- a/go/loader/loader.go +++ b/go/loader/loader.go @@ -458,8 +458,9 @@ func (conf *Config) Load() (*Program, error) { conf.FindPackage = func(ctxt *build.Context, path string) (*build.Package, error) { // TODO(adonovan): cache calls to build.Import // so we don't do it three times per test package. + // (Note that this is difficult due to vendoring.) ioLimit <- true - bp, err := ctxt.Import(path, conf.Cwd, 0) + bp, err := ctxt.Import(path, conf.Cwd, importMode) <-ioLimit if _, ok := err.(*build.NoGoError); ok { return bp, nil // empty directory is not an error diff --git a/go/loader/loader_go15.go b/go/loader/loader_go15.go new file mode 100644 index 00000000..5dff7ca7 --- /dev/null +++ b/go/loader/loader_go15.go @@ -0,0 +1,11 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.6 + +package loader + +import "go/build" + +var importMode build.ImportMode = 0 diff --git a/go/loader/loader_go16.go b/go/loader/loader_go16.go new file mode 100644 index 00000000..cd310637 --- /dev/null +++ b/go/loader/loader_go16.go @@ -0,0 +1,11 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.6 + +package loader + +import "go/build" + +var importMode build.ImportMode = build.AllowVendor