aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCole Faust <colefaust@google.com>2024-03-21 16:16:49 -0700
committerCole Faust <colefaust@google.com>2024-03-21 16:16:49 -0700
commit894b3185285af9a7d866c7c3cafea52a488d9f48 (patch)
tree4ffef3bf7887c4f00fcbd1fdb965a90ecc6bbce5
parentd2f1141871f4fb2e5b3237fd822af9e7b05bf2f1 (diff)
downloadblueprint-894b3185285af9a7d866c7c3cafea52a488d9f48.tar.gz
Fix error reporting in MatchesIncludeTags
ctx.ModuleErrorf for the main blueprint config object doesn't report an error, it just returns it. If go had something like C++'s `[[nodiscard]]` or rust's `#[must_use]` that would be useful here, but the issue has been open since 2017: https://github.com/golang/go/issues/20803 Test: Presubmits Change-Id: I72709e6c5466d55f5c0f3fe51a25c29df0826271
-rw-r--r--context.go16
1 files changed, 10 insertions, 6 deletions
diff --git a/context.go b/context.go
index 4661055..6ec1641 100644
--- a/context.go
+++ b/context.go
@@ -1068,8 +1068,12 @@ func shouldVisitFile(c *Context, file *parser.File) shouldVisitFileInfo {
}
if blueprintPackageIncludes != nil {
- packageMatches := blueprintPackageIncludes.MatchesIncludeTags(c)
- if !packageMatches {
+ packageMatches, err := blueprintPackageIncludes.matchesIncludeTags(c)
+ if err != nil {
+ return shouldVisitFileInfo{
+ errs: []error{err},
+ }
+ } else if !packageMatches {
return shouldVisitFileInfo{
shouldVisitFile: false,
skippedModules: skippedModules,
@@ -5265,14 +5269,14 @@ func (pi *PackageIncludes) MatchAll() []string {
}
// Returns true if all requested include tags are set in the Context object
-func (pi *PackageIncludes) MatchesIncludeTags(ctx *Context) bool {
+func (pi *PackageIncludes) matchesIncludeTags(ctx *Context) (bool, error) {
if len(pi.MatchAll()) == 0 {
- ctx.ModuleErrorf(pi, "Match_all must be a non-empty list")
+ return false, ctx.ModuleErrorf(pi, "Match_all must be a non-empty list")
}
for _, includeTag := range pi.MatchAll() {
if !ctx.ContainsIncludeTag(includeTag) {
- return false
+ return false, nil
}
}
- return true
+ return true, nil
}