aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/load/pkg.go
diff options
context:
space:
mode:
authorunbyte <i@shangyes.net>2021-04-28 04:32:15 +0000
committerBryan C. Mills <bcmills@google.com>2021-04-28 15:10:38 +0000
commit5c69cb2a5bc33ae2c8af598a53f4337bd1e77508 (patch)
tree38ada71b2accfb98542ecf854fab8996ab1545d8 /src/cmd/go/internal/load/pkg.go
parent11052d77a307a417a4de94991303949bf697b8ee (diff)
downloadgo-5c69cb2a5bc33ae2c8af598a53f4337bd1e77508.tar.gz
go-5c69cb2a5bc33ae2c8af598a53f4337bd1e77508.zip
cmd/go: populate module info even if an error occurs in loading package
The existing implementation ignores module info if there is any error loading the package. Fixes #44287 Change-Id: I24142e4c7256517292fc654e29d759871b80bc09 GitHub-Last-Rev: 28e9bf85e8c119f3b805c38c79aef60322fcc551 GitHub-Pull-Request: golang/go#45777 Reviewed-on: https://go-review.googlesource.com/c/go/+/313549 Reviewed-by: Bryan C. Mills <bcmills@google.com> Reviewed-by: Michael Matloob <matloob@golang.org> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Go Bot <gobot@golang.org> Trust: Michael Matloob <matloob@golang.org>
Diffstat (limited to 'src/cmd/go/internal/load/pkg.go')
-rw-r--r--src/cmd/go/internal/load/pkg.go23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go
index c1e3eaa0f3..2d91d10583 100644
--- a/src/cmd/go/internal/load/pkg.go
+++ b/src/cmd/go/internal/load/pkg.go
@@ -1846,6 +1846,14 @@ func (p *Package) load(ctx context.Context, opts PackageOpts, path string, stk *
stk.Push(path)
defer stk.Pop()
+ pkgPath := p.ImportPath
+ if p.Internal.CmdlineFiles {
+ pkgPath = "command-line-arguments"
+ }
+ if cfg.ModulesEnabled {
+ p.Module = modload.PackageModuleInfo(ctx, pkgPath)
+ }
+
p.EmbedFiles, p.Internal.Embed, err = resolveEmbed(p.Dir, p.EmbedPatterns)
if err != nil {
p.Incomplete = true
@@ -1905,6 +1913,10 @@ func (p *Package) load(ctx context.Context, opts PackageOpts, path string, stk *
p.Internal.Imports = imports
p.collectDeps()
+ if cfg.ModulesEnabled && p.Error == nil && p.Name == "main" && len(p.DepsErrors) == 0 {
+ p.Internal.BuildInfo = modload.PackageBuildInfo(pkgPath, p.Deps)
+ }
+
// unsafe is a fake package.
if p.Standard && (p.ImportPath == "unsafe" || cfg.BuildContext.Compiler == "gccgo") {
p.Target = ""
@@ -1944,17 +1956,6 @@ func (p *Package) load(ctx context.Context, opts PackageOpts, path string, stk *
setError(fmt.Errorf("Fortran source files not allowed when not using cgo or SWIG: %s", strings.Join(p.FFiles, " ")))
return
}
-
- if cfg.ModulesEnabled && p.Error == nil {
- mainPath := p.ImportPath
- if p.Internal.CmdlineFiles {
- mainPath = "command-line-arguments"
- }
- p.Module = modload.PackageModuleInfo(ctx, mainPath)
- if p.Name == "main" && len(p.DepsErrors) == 0 {
- p.Internal.BuildInfo = modload.PackageBuildInfo(mainPath, p.Deps)
- }
- }
}
// An EmbedError indicates a problem with a go:embed directive.