go/packages: pass through packages with error in the fallback

This applies a part of golang.org/cl/137075 to the fallback. If go list
doesn't find a package, it returns an almost empty package structure
with an error set on it. That change passed through those packages
from the 1.11+ go list, so users could determine there wasn't a match.
This change does the same from the go 1.10 fallback go list code.

Change-Id: I98acc186c0a9eeef0416e9fec0e1fe0e29ddc51c
Reviewed-on: https://go-review.googlesource.com/c/139158
Reviewed-by: Alan Donovan <adonovan@google.com>
This commit is contained in:
Michael Matloob 2018-10-03 10:48:25 -04:00
parent 2f84ea8ef8
commit cb0b336180
1 changed files with 7 additions and 1 deletions

View File

@ -49,7 +49,7 @@ func golistDriverFallback(cfg *Config, words ...string) (*driverResponse, error)
addPackage := func(p *jsonPackage) {
id := p.ImportPath
if p.Name == "" || allPkgs[id] {
if allPkgs[id] {
return
}
allPkgs[id] = true
@ -133,6 +133,12 @@ func golistDriverFallback(cfg *Config, words ...string) (*driverResponse, error)
Imports: importMap(p.Imports),
// TODO(matloob): set errors on the Package to cgoErrors
}
if p.Error != nil {
pkg.Errors = append(pkg.Errors, Error{
Pos: p.Error.Pos,
Msg: p.Error.Err,
})
}
response.Packages = append(response.Packages, pkg)
if cfg.Tests && isRoot {
testID := fmt.Sprintf("%s [%s.test]", id, id)