mirror of
https://github.com/golang/go
synced 2024-11-18 20:34:39 -07:00
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: d93332425a
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>
This commit is contained in:
parent
267323ef2d
commit
ee788dbae0
@ -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.
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user