mirror of
https://github.com/golang/go.git
synced 2025-05-29 03:11:26 +00:00
cmd/go/internal/modload: propagate errors from Query for missing imports
Updates #30748 Updates #28459 Change-Id: I1c34b3dae0bf9361dba0dae66bb868901ecafe29 Reviewed-on: https://go-review.googlesource.com/c/go/+/189780 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
parent
2a4c0afee7
commit
6f1667ea3e
@ -28,6 +28,7 @@ import (
|
|||||||
type ImportMissingError struct {
|
type ImportMissingError struct {
|
||||||
ImportPath string
|
ImportPath string
|
||||||
Module module.Version
|
Module module.Version
|
||||||
|
QueryErr error
|
||||||
|
|
||||||
// newMissingVersion is set to a newer version of Module if one is present
|
// newMissingVersion is set to a newer version of Module if one is present
|
||||||
// in the build list. When set, we can't automatically upgrade.
|
// in the build list. When set, we can't automatically upgrade.
|
||||||
@ -39,9 +40,12 @@ func (e *ImportMissingError) Error() string {
|
|||||||
if str.HasPathPrefix(e.ImportPath, "cmd") {
|
if str.HasPathPrefix(e.ImportPath, "cmd") {
|
||||||
return fmt.Sprintf("package %s is not in GOROOT (%s)", e.ImportPath, filepath.Join(cfg.GOROOT, "src", e.ImportPath))
|
return fmt.Sprintf("package %s is not in GOROOT (%s)", e.ImportPath, filepath.Join(cfg.GOROOT, "src", e.ImportPath))
|
||||||
}
|
}
|
||||||
|
if e.QueryErr != nil {
|
||||||
|
return fmt.Sprintf("cannot find module providing package %s: %v", e.ImportPath, e.QueryErr)
|
||||||
|
}
|
||||||
return "cannot find module providing package " + e.ImportPath
|
return "cannot find module providing package " + e.ImportPath
|
||||||
}
|
}
|
||||||
return "missing module for import: " + e.Module.Path + "@" + e.Module.Version + " provides " + e.ImportPath
|
return fmt.Sprintf("missing module for import: %s@%s provides %s", e.Module.Path, e.Module.Version, e.ImportPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Import finds the module and directory in the build list
|
// Import finds the module and directory in the build list
|
||||||
@ -197,7 +201,7 @@ func Import(path string) (m module.Version, dir string, err error) {
|
|||||||
if errors.Is(err, os.ErrNotExist) {
|
if errors.Is(err, os.ErrNotExist) {
|
||||||
// Return "cannot find module providing package […]" instead of whatever
|
// Return "cannot find module providing package […]" instead of whatever
|
||||||
// low-level error QueryPackage produced.
|
// low-level error QueryPackage produced.
|
||||||
return module.Version{}, "", &ImportMissingError{ImportPath: path}
|
return module.Version{}, "", &ImportMissingError{ImportPath: path, QueryErr: err}
|
||||||
} else {
|
} else {
|
||||||
return module.Version{}, "", err
|
return module.Version{}, "", err
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user