aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKirill Che <g4s8.public@gmail.com>2023-09-08 07:45:12 +0000
committerGopher Robot <gobot@golang.org>2023-09-09 01:48:44 +0000
commitee788dbae0fc8e074fc66fc76f0597200b443950 (patch)
tree5b2e767330dd22bac80e366ea5b0a33c7b09a2c7 /src
parent267323ef2d22da4b2a5ed1ed6f220421aa580a6c (diff)
downloadgo-ee788dbae0fc8e074fc66fc76f0597200b443950.tar.xz
cmd/go/internal/generate: error if failed to find a package
Add check for package loader to print error and fail `go generate` command, if package can not be found. Fixes #60079 Change-Id: Ib9e730c2b69df6e5ac307c7bdfea0ee993ab6ed8 GitHub-Last-Rev: d93332425a980d0298c74f33f1d154e0afbf5373 GitHub-Pull-Request: golang/go#60178 Reviewed-on: https://go-review.googlesource.com/c/go/+/494836 Auto-Submit: Bryan Mills <bcmills@google.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Bryan Mills <bcmills@google.com> Run-TryBot: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/go/internal/generate/generate.go8
-rw-r--r--src/cmd/go/testdata/script/generate_invalid.txt7
2 files changed, 14 insertions, 1 deletions
diff --git a/src/cmd/go/internal/generate/generate.go b/src/cmd/go/internal/generate/generate.go
index f1f4a6cf30..486de1862d 100644
--- a/src/cmd/go/internal/generate/generate.go
+++ b/src/cmd/go/internal/generate/generate.go
@@ -210,6 +210,13 @@ func runGenerate(ctx context.Context, cmd *base.Command, args []string) {
continue
}
+ if pkg.Error != nil && len(pkg.InternalAllGoFiles()) == 0 {
+ // A directory only contains a Go package if it has at least
+ // one .go source file, so the fact that there are no files
+ // implies that the package couldn't be found.
+ base.Errorf("%v", pkg.Error)
+ }
+
for _, file := range pkg.InternalGoFiles() {
if !generate(file) {
break
@@ -222,6 +229,7 @@ func runGenerate(ctx context.Context, cmd *base.Command, args []string) {
}
}
}
+ base.ExitIfErrors()
}
// generate runs the generation directives for a single file.
diff --git a/src/cmd/go/testdata/script/generate_invalid.txt b/src/cmd/go/testdata/script/generate_invalid.txt
index e18e62ccf3..3bede321a9 100644
--- a/src/cmd/go/testdata/script/generate_invalid.txt
+++ b/src/cmd/go/testdata/script/generate_invalid.txt
@@ -6,8 +6,13 @@ go install echo.go
env PATH=$GOBIN${:}$PATH
# Test go generate for directory with no go files
-go generate ./nogo
+! go generate ./nogo
! stdout 'Fail'
+stderr 'no Go files'
+
+# Test go generate for module which doesn't exist should fail
+! go generate foo.bar/nothing
+stderr 'no required module provides package foo.bar/nothing'
# Test go generate for package where all .go files are excluded by build
# constraints