mirror of
https://github.com/golang/go.git
synced 2025-05-19 22:33:25 +00:00
cmd/doc: show original import error when package cannot be found
Updates #34669 Change-Id: I8d0ee68885e804e131f42a512080486f9b25e9dd Reviewed-on: https://go-review.googlesource.com/c/go/+/199819 Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
99b9ee3e44
commit
aa09e751ff
@ -231,8 +231,8 @@ func parseArgs(args []string) (pkg *build.Package, path, symbol string, more boo
|
||||
// First, is it a complete package path as it is? If so, we are done.
|
||||
// This avoids confusion over package paths that have other
|
||||
// package paths as their prefix.
|
||||
pkg, err = build.Import(arg, wd, build.ImportComment)
|
||||
if err == nil {
|
||||
pkg, importErr := build.Import(arg, wd, build.ImportComment)
|
||||
if importErr == nil {
|
||||
return pkg, arg, "", false
|
||||
}
|
||||
// Another disambiguator: If the symbol starts with an upper
|
||||
@ -286,7 +286,18 @@ func parseArgs(args []string) (pkg *build.Package, path, symbol string, more boo
|
||||
}
|
||||
// If it has a slash, we've failed.
|
||||
if slash >= 0 {
|
||||
log.Fatalf("no such package %s", arg[0:period])
|
||||
// build.Import should always include the path in its error message,
|
||||
// and we should avoid repeating it. Unfortunately, build.Import doesn't
|
||||
// return a structured error. That can't easily be fixed, since it
|
||||
// invokes 'go list' and returns the error text from the loaded package.
|
||||
// TODO(golang.org/issue/34750): load using golang.org/x/tools/go/packages
|
||||
// instead of go/build.
|
||||
importErrStr := importErr.Error()
|
||||
if strings.Contains(importErrStr, arg[:period]) {
|
||||
log.Fatal(importErrStr)
|
||||
} else {
|
||||
log.Fatalf("no such package %s: %s", arg[:period], importErrStr)
|
||||
}
|
||||
}
|
||||
// Guess it's a symbol in the current directory.
|
||||
return importDir(wd), "", arg, false
|
||||
|
5
src/cmd/go/testdata/script/mod_doc.txt
vendored
5
src/cmd/go/testdata/script/mod_doc.txt
vendored
@ -36,6 +36,11 @@ go doc rsc.io/quote
|
||||
! stdout 'Package quote is located in a GOPATH workspace.'
|
||||
stdout 'Package quote collects pithy sayings.'
|
||||
|
||||
# Check that a sensible error message is printed when a package is not found.
|
||||
env GOPROXY=off
|
||||
! go doc example.com/hello
|
||||
stderr '^doc: cannot find module providing package example.com/hello: module lookup disabled by GOPROXY=off$'
|
||||
|
||||
-- go.mod --
|
||||
module x
|
||||
require rsc.io/quote v1.5.2
|
||||
|
Loading…
x
Reference in New Issue
Block a user