aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Matloob <matloob@golang.org>2024-01-29 11:14:05 -0500
committerMichael Knyszek <mknyszek@google.com>2024-02-01 20:19:50 +0000
commit01c93ad0498b4bc337ced16f4a4b8b65f255189c (patch)
tree5317732b3619519a896b9425e5d189286f88611a
parentdb74bfba18051397d8feb93628b1e9eb3db15575 (diff)
downloadgo-01c93ad0498b4bc337ced16f4a4b8b65f255189c.tar.gz
go-01c93ad0498b4bc337ced16f4a4b8b65f255189c.zip
[release-branch.go1.21] cmd/go/internal/generate: call modload.InitWorkFile
This is necessary for go generate to enter workspace mode for recognizing package paths in the workspace. For #56098 Fixes #65351 Change-Id: I25f68de24f4189259353f63194823516e9d3d505 Reviewed-on: https://go-review.googlesource.com/c/go/+/559195 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Bryan Mills <bcmills@google.com> (cherry picked from commit b91bad78199aaf8baeb66cb8a30f51b89b8f90ee) Reviewed-on: https://go-review.googlesource.com/c/go/+/559235
-rw-r--r--src/cmd/go/internal/generate/generate.go2
-rw-r--r--src/cmd/go/testdata/script/generate_workspace.txt27
2 files changed, 29 insertions, 0 deletions
diff --git a/src/cmd/go/internal/generate/generate.go b/src/cmd/go/internal/generate/generate.go
index f1f4a6cf30d..353506ffc61 100644
--- a/src/cmd/go/internal/generate/generate.go
+++ b/src/cmd/go/internal/generate/generate.go
@@ -181,6 +181,8 @@ func init() {
}
func runGenerate(ctx context.Context, cmd *base.Command, args []string) {
+ modload.InitWorkfile()
+
if generateRunFlag != "" {
var err error
generateRunRE, err = regexp.Compile(generateRunFlag)
diff --git a/src/cmd/go/testdata/script/generate_workspace.txt b/src/cmd/go/testdata/script/generate_workspace.txt
new file mode 100644
index 00000000000..eda8a4f15ec
--- /dev/null
+++ b/src/cmd/go/testdata/script/generate_workspace.txt
@@ -0,0 +1,27 @@
+# This is a regression test for Issue #56098: Go generate
+# wasn't initializing workspace mode
+
+[short] skip
+
+go generate ./mod
+cmp ./mod/got.txt want.txt
+
+-- go.work --
+go 1.21
+
+use ./mod
+-- mod/go.mod --
+module example.com/mod
+-- mod/gen.go --
+//go:generate go run gen.go got.txt
+
+package main
+
+import "os"
+
+func main() {
+ outfile := os.Args[1]
+ os.WriteFile(outfile, []byte("Hello World!\n"), 0644)
+}
+-- want.txt --
+Hello World! \ No newline at end of file