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>
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
}
}
}
+ base.ExitIfErrors()
}
// generate runs the generation directives for a single file.
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