From 28a05f541dd218c40cc221db4e97898cc5a3b902 Mon Sep 17 00:00:00 2001 From: Zeke Lu Date: Fri, 7 Oct 2022 00:49:15 +0000 Subject: [PATCH] cmd/go/internal/modload: improve error message for failing to read module listed in go.work Run "go build ./x" in this workspace: -- go.work -- use ./y -- x/go.mod -- module x go 1.19 -- x/m.go -- package m It fails with: "go: open /tmp/foo/y/go.mod: no such file or directory". It's unclear where the name "y" comes from. This change will emit error like: "go: cannot load module listed in go.work file: open /tmp/foo/y/go.mod: no such file or directory" Fixes #55952. Change-Id: Ia45dd915e3fbd6e33340f352b3d6235c6c31190b GitHub-Last-Rev: 410de1b4a71d07bbd5abd1482b6d55fa29f31336 GitHub-Pull-Request: golang/go#56050 Reviewed-on: https://go-review.googlesource.com/c/go/+/438147 Run-TryBot: hopehook TryBot-Result: Gopher Robot Auto-Submit: Bryan Mills Reviewed-by: Bryan Mills Run-TryBot: Bryan Mills Reviewed-by: Alan Donovan --- src/cmd/go/internal/modload/init.go | 6 +++++- src/cmd/go/testdata/script/work_use_issue55952.txt | 11 +++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 src/cmd/go/testdata/script/work_use_issue55952.txt diff --git a/src/cmd/go/internal/modload/init.go b/src/cmd/go/internal/modload/init.go index 7da2bebdb8..06be18405d 100644 --- a/src/cmd/go/internal/modload/init.go +++ b/src/cmd/go/internal/modload/init.go @@ -718,7 +718,11 @@ func LoadModFile(ctx context.Context) *Requirements { var fixed bool data, f, err := ReadModFile(gomod, fixVersion(ctx, &fixed)) if err != nil { - base.Fatalf("go: %v", err) + if inWorkspaceMode() { + base.Fatalf("go: cannot load module listed in go.work file: %v", err) + } else { + base.Fatalf("go: %v", err) + } } modFiles = append(modFiles, f) diff --git a/src/cmd/go/testdata/script/work_use_issue55952.txt b/src/cmd/go/testdata/script/work_use_issue55952.txt new file mode 100644 index 0000000000..2eef36199d --- /dev/null +++ b/src/cmd/go/testdata/script/work_use_issue55952.txt @@ -0,0 +1,11 @@ +! go list . +stderr '^go: cannot load module listed in go\.work file: open .+go\.mod:' + +-- go.work -- +use ./y +-- x/go.mod -- +module x + +go 1.19 +-- x/m.go -- +package m -- 2.50.0