diff options
author | Cole Faust <colefaust@google.com> | 2024-03-21 16:16:49 -0700 |
---|---|---|
committer | Cole Faust <colefaust@google.com> | 2024-03-21 16:16:49 -0700 |
commit | 894b3185285af9a7d866c7c3cafea52a488d9f48 (patch) | |
tree | 4ffef3bf7887c4f00fcbd1fdb965a90ecc6bbce5 | |
parent | d2f1141871f4fb2e5b3237fd822af9e7b05bf2f1 (diff) | |
download | blueprint-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.go | 16 |
1 files changed, 10 insertions, 6 deletions
@@ -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 } |